Je suis en train de lire un livre sur .NET, et dans l'un des exemples de code, il y a une définition de classe avec ce champ :
private DateTime? startdate
Qu'est-ce que DateTime?
C'est-à-dire ?
Je suis en train de lire un livre sur .NET, et dans l'un des exemples de code, il y a une définition de classe avec ce champ :
private DateTime? startdate
Qu'est-ce que DateTime?
C'est-à-dire ?
Desde DateTime
est un struct
et non un class
vous obtenez un DateTime
objet et non un référence lorsque vous déclarez un champ ou une variable de ce type.
Et, de la même manière qu'un int
ne peut être null
donc ce DateTime
ne peut jamais être null
parce que ce n'est pas une référence.
L'ajout du point d'interrogation le transforme en un type nullable ce qui signifie que soit il s'agit d'un DateTime
objet, o c'est null
.
DateTime?
est un sucre syntaxique pour Nullable<DateTime>
où Nullable
est lui-même un struct
.
C'est un DateTime nullable. ?
après un type/structure primitif indique qu'il s'agit de la version nullable.
DateTime est une structure qui ne peut jamais être nulle. De MSDN :
Le type de valeur DateTime représente des dates et des heures dont les valeurs vont de 12:00:00 minuit, le 1er janvier 0001 Anno Domini, ou A.D. (également connu sous le nom de Common Era, ou C.E.) à 11:59:59 P.M., le 31 décembre 9999 A.D. (C.E.).
DateTime?
peut toutefois être nulle.
A ? comme suffixe pour un type de valeur permet des affectations nulles qui seraient autrement impossibles.
http://msdn.microsoft.com/en-us/library/b3h38hb0.aspx
Représente un objet dont le type sous-jacent sous-jacent est un type de valeur qui peut également être affecté d'une référence nulle.
Cela signifie que vous pouvez écrire quelque chose comme ceci :
DateTime? a = null;
if (!a.HasValue)
{
a = DateTime.Now;
if (a.HasValue)
{
Console.WriteLine(a.Value);
}
}
DateTime ? est syntaxiquement équivalent à Nullable<DateTime> .
Il vous donne essentiellement un état supplémentaire pour les primitives. Il peut s'agir d'une valeur ou d'un null. Il peut être utile dans les situations où une valeur n'a pas besoin d'être assignée. Ainsi, plutôt que d'utiliser par exemple datetime.min ou max, vous pouvez l'assigner null pour représenter l'absence de valeur.
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.
0 votes
Duplicata possible de stackoverflow.com/questions/2690866/