Ce qui est égal à DateTime.MinValue, donc vous pouvez aussi faire DateTime myDate = DateTime.MinValueaussi bien: /
Lloyd
20
@Lloyd La plupart du temps ... mais pas comme paramètre par défaut DateTime.MinValue n'est pas une constante de temps de compilation - mais par défaut (DateTime) / new DateTime () l'est.
Ricibob
12
Juste pour clarifier l'excellent commentaire de @ Ricibob, car c'est important: si vous créez une méthode avec un paramètre optionnel, vous pouvez UNIQUEMENT utiliser soit default(DateTime)ou new DateTime(). Ce sont tous les deux des constantes de temps de compilation , requises pour les valeurs de paramètre facultatives. Si les constantes de temps de compilation ne sont pas nécessaires, alors default(DateTime), new DateTime()et DateTime.MinValuesont interchangeables.
leanne
Réponses:
200
Non, ils sont identiques.
default(), pour tout type de valeur ( DateTimeest un type de valeur) appellera toujours le constructeur sans paramètre.
FWIW; En C # 6, ce comportement changera. C # 6 introduit des constructeurs sans paramètre pour les structures, qui permettent au comportement de newdifférer de ce qui default(T)va faire.
vcsjones
30
On pourrait dire que default(DateTime)c'est plus descriptif de l'intention du programmeur, donc généralement plus favorable.
intrepidis
16
@vcsjones cela a été supprimé avant la version finale de C # 6.0 cependant.
nawfal
5
@nawfal Ouais. Probablement mieux que ça aussi.
vcsjones
Cette réponse est tout simplement fausse IMO: les deux choses sont sémantiquement identiques, mais aucune d'elles n'appelle un constructeur - les deux options de syntaxe utilisentinitobj
Marc Gravell
22
Si vous souhaitez utiliser la valeur par défaut pour un paramètre DateTime dans une méthode, vous ne pouvez utiliser que default (DateTime).
Bien sûr, DateTime.MinValue ne compile pas? Les paramètres facultatifs doivent être des constantes de compilation, ce que MinValue n'est pas. default (DateTime) et new DateTime () sont tous les deux valides (ce qui est en fait amusant, car const DateTime x = default (DateTime) n'est pas valide, car les valeurs DateTime ne peuvent pas être déclarées comme constantes de compilation)
Jerri Kangasniemi
16
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 de procéder comme suit:
Je argumenterais contre cela. La valeur par défaut DateTimeest utile en tant que valeur non définie, avec une simple comparaison avec default(DateTime). À quoi sert une 01/01/0001valeur autre que celle par défaut ?
Rawling
Gardez à l'esprit que c'est DateTimeKind.Utc au lieu de DateTimeKind.UTC
Roberto
@Roberto Merci, corrigé.
jpaugh
-3
La façon la plus simple de le comprendre est que DateTime est une structure. Lorsque vous initialisez une structure, elle est initialisée à sa valeur minimale:DateTime.Min
Il n'y a donc pas de différence entre default(DateTime)et new DateTime()etDateTime.Min
Non, les structures ne sont pas nécessairement initialisées à leur valeur minimale. Ils sont initialisés à tous les bits étant à zéro. Pour certains types, c'est leur valeur la plus basse, pour d'autres, comme les types numériques qui peuvent être négatifs, ce n'est pas près de leur valeur minimale. Et bien sûr, d' autres encore ne seront pas comparables et ne seront pas avoir une valeur « minimale ».
DateTime.MinValue
, donc vous pouvez aussi faireDateTime myDate = DateTime.MinValue
aussi bien: /default(DateTime)
ounew DateTime()
. Ce sont tous les deux des constantes de temps de compilation , requises pour les valeurs de paramètre facultatives. Si les constantes de temps de compilation ne sont pas nécessaires, alorsdefault(DateTime)
,new DateTime()
etDateTime.MinValue
sont interchangeables.Réponses:
Non, ils sont identiques.
default()
, pour tout type de valeur (DateTime
est un type de valeur) appellera toujours le constructeur sans paramètre.la source
new
différer de ce quidefault(T)
va faire.default(DateTime)
c'est plus descriptif de l'intention du programmeur, donc généralement plus favorable.initobj
Si vous souhaitez utiliser la valeur par défaut pour un paramètre DateTime dans une méthode, vous ne pouvez utiliser que default (DateTime).
La ligne suivante ne compilera pas:
Cette ligne compilera:
la source
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 de procéder comme suit:
La
myDate.Kind
propriété est en lecture seule, elle ne peut donc pas être modifiée après l'appel du constructeur.la source
DateTime
est utile en tant que valeur non définie, avec une simple comparaison avecdefault(DateTime)
. À quoi sert une01/01/0001
valeur autre que celle par défaut ?La façon la plus simple de le comprendre est que DateTime est une structure. Lorsque vous initialisez une structure, elle est initialisée à sa valeur minimale:
DateTime.Min
Il n'y a donc pas de différence entre
default(DateTime)
etnew DateTime()
etDateTime.Min
la source