web-dev-qa-db-fra.com

new DateTime () vs default (DateTime)

Y a-t-il une raison de choisir l'un d'entre eux plutôt que l'autre?

DateTime myDate = new DateTime();

ou

DateTime myDate = default(DateTime);

Les deux sont égaux 1/1/0001 12:00:00 AM.

172
RJP

Non, ils sont identiques.

default(), pour tout type de valeur (DateTime est un type de valeur) appellera toujours le constructeur sans paramètre.

182
Servy

Si vous souhaitez utiliser la valeur par défaut pour un paramètre DateTime dans une méthode, vous pouvez uniquement utiliser la valeur par défaut (DateTime).

La ligne suivante ne sera pas compilée:

    private void MyMethod(DateTime syncedTime = DateTime.MinValue)

Cette ligne va compiler:

    private void MyMethod(DateTime syncedTime = default(DateTime))
21
Tomer

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:

DateTime myDate = new DateTime(1, 1, 1, 0, 0, 0, DateTimeKind.Utc);

La propriété myDate.Kind est en lecture seule et ne peut donc pas être modifiée après l'appel du constructeur.

16
Ben C