303 votes

DateTime "null" valeur

J'ai beaucoup cherché mais je n'ai pas trouvé de solution. Comment gérez-vous un DateTime qui devrait être capable de contenir une valeur non initialisée (équivalent à null)? J'ai une classe qui peut avoir une valeur de propriété DateTime définie ou non. Je pensais initialiser le propriétaire de propriété à DateTime.MinValue, qui pourrait alors être facilement vérifié. Je suppose que c'est une question assez commune, comment faites-vous cela?

474voto

Joel Coehoorn Points 190579

Normal DateTimes, si vous n'avez pas les initialiser à tous, alors ils correspondent DateTime.MinValue, parce que c'est un type de valeur plutôt que d'un type de référence.

Vous pouvez également utiliser un nullable DateTime, comme ceci:

DateTime? MyNullableDate;

Ou de la plus de la forme:

Nullable<DateTime> MyNullableDate;

Et, enfin, il y a un bâti en moyen de faire référence à la valeur par défaut de n'importe quel type. Cette méthode retourne null pour les types référence, mais pour notre DateTime exemple, il sera de retour le même que le type DateTime.MinValue:

default(DateTime)

90voto

Mark Ingram Points 24995

Si vous utilisez .NET 2.0 (ou version ultérieure), vous pouvez utiliser le type nullable:

 DateTime? dt = null;
 

ou

 Nullable<DateTime> dt = null;
 

puis plus tard:

 dt = new DateTime();
 

Et vous pouvez vérifier la valeur avec:

 if (dt.HasValue)
{
  // Do something with dt.Value
}
 

Ou vous pouvez l'utiliser comme:

 DateTime dt2 = dt ?? DateTime.MinValue;
 

Vous pouvez lire plus ici:
http://msdn.microsoft.com/en-us/library/b3h38hb0.aspx

41voto

imanabidi Points 3203

DateTime? MyDateTime {get; set;}

 MyDateTime = (drOrder["Field1"] == DBNull.Value) ? (DateTime?)null : ((DateTime)drOrder["Field1"]);
 

14voto

David Mohundro Points 5158

J'envisagerais d'utiliser un type nullable .

DateTime? myDate au lieu de DateTime myDate .

6voto

Patrik Points 5315

Vous pouvez utiliser un DateTime nullable pour cela.

 Nullable<DateTime> myDateTime;
 

ou la même chose écrite comme ceci:

 DateTime? myDateTime;
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X