new DateTime() vs défaut(DateTime)
Est là une bonne raison de choisir l'un de ces plus de l'autre?
DateTime myDate = new DateTime();
ou
DateTime myDate = default(DateTime);
Les deux sont égales 1/1/0001 12:00:00 AM
.
- Qui est égal à
DateTime.MinValue
, de sorte que vous pourriez tout aussi bien faireDateTime myDate = DateTime.MinValue
ainsi :/ - La plupart du temps... mais pas en tant que paramètre par défaut de type DateTime.MinValue n'est pas une compilation constante de temps - mais par défaut(DateTime)/new DateTime() est.
- Juste pour clarifier @Ricibob excellent commentaire, parce que c'est important: si vous créez une méthode avec un paramètre facultatif, vous pouvez utiliser
default(DateTime)
ounew DateTime()
. Ceux qui sont à la fois la compilation des constantes de temps, requis pour des valeurs de paramètres facultatifs. Si le moment de la compilation, les constantes ne sont pas nécessaires, alorsdefault(DateTime)
,new DateTime()
, etDateTime.MinValue
sont interchangeables.
Vous devez vous connecter pour publier un commentaire.
Non, ils sont identiques.
default()
, pour n'importe quel type de valeur (DateTime
est un type de valeur) sera toujours appeler le constructeur sans paramètre.new
diffèrent de ce quedefault(T)
fera.default(DateTime)
est plus descriptive de l'intention du programmeur, donc plus favorable à son habitude.Si vous souhaitez utiliser la valeur par défaut pour un DateTime paramètre d'une méthode, vous ne pouvez utiliser la valeur par défaut(DateTime).
La ligne suivante ne sera pas compiler:
Cette ligne permettra de compiler:
La réponse est non. Gardez à l'esprit que dans les deux cas,
mdDate.Kind = DateTimeKind.Unspecified
.Par conséquent, il peut être préférable d'effectuer les opérations suivantes:
La
myDate.Kind
propriété est en lecture seule, donc il ne peut pas être modifié après que le constructeur est appelé.DateTime
est utile comme une valeur qui n'est pas mis en valeur, avec une simple comparaison dedefault(DateTime)
. Quelle est l'utilité d'un non-par défaut01/01/0001
valeur?La plus simple façon de comprendre c'est que DateTime est une struct. Lorsque vous initialiser une structure c'est l'initialiser à la valeur minimale :
DateTime.Min
Donc il n'y a pas de différence entre
default(DateTime)
etnew DateTime()
etDateTime.Min