Bonjour
Quelle est la différence entre cette déclaration de variable
et celle-ci:Code:DateTime? dd;
Code:DateTime dd;
Merci ?
Version imprimable
Bonjour
Quelle est la différence entre cette déclaration de variable
et celle-ci:Code:DateTime? dd;
Code:DateTime dd;
Merci ?
Merci toopac,
J'essaie de mettre à jour un champ de BDD avec une variable qui peut être null mais en fait, c'est plutot DBNull qu'il faut utilisé.
Je n'arrive pas en une seule ligne à le faire, du style :
Code:
1
2 DateTime ResultDate; row["DAT_NAI"] = (DateTime.TryParse(msk_DateNaiss.Text, out ResultDate) ? msk_DateNaiss.Text : DBNull.Value)
A savoir que dans ton exemple, il n'y a aucune différence car DateTime est déjà du type Nullable ...
Cette syntaxe sert essentiellement pour les types "primitifs" (int, double, ...) et les structures.
A priori, Brachior, Datetime n'est pas nullable car quand je fais:
j'obtiens l'erreur de compil :Code:DateTime ResultDate = null;
Citation:
Impossible de convertir null en 'System.DateTime', car il s'agit d'un type valeur qui n'autorise pas les valeurs null
DateTime n'est effectivement pas nullable.
Je ne vois pas ton problème du coup. Tu cherches seulement à faire le tout en une seule ligne ?
oui c'est bien cà toopac, en une seule ligne
En effet, mea culpa ^^
DateTime est en effet une structure ^^
Ben je vois pas.
A moins de te faire une méthode (dans un classe Utils par exemple) du genre :
Du coup t'aurais ça :Code:
1
2
3
4
5
6
7
8
9
10
11
12 public static bool IsDate(string s) { try { DateTime.Parse(s); return true; } catch (InvalidCastException) { return false; } }
Mais sinon je ne crois pas que ce soit possible...Code:row["DAT_NAI"] = Utils.IsDate(s) ? s : DBNull.Value;
En effet Toopac, sauf que le Si abrégé n'accepte pas de renvoyer 2 valeurs de type différent (un string si Vrai et DBNull si Faux)
Ha pardon, effectivement.
Tu peux faire ceci alors :
etCode:
1
2
3
4
5
6
7
8
9
10
11 public static Object GetDate(string s) { try { return DateTime.Parse(s); } catch (Exception) { return DBNull.Value; } }
Code:row["DAT_NAI"] = Utils.GetDate(s);
Oui, c'est bon. Je ne pense jamais au type "object" un peu fourre-tout :)
Merci à tous