Новый параметр DateTime() vs default (DateTime)

Есть ли причина выбрать один из них над другим?

DateTime myDate = new DateTime();

или

DateTime myDate = default(DateTime);

Оба они равны 1/1/0001 12:00:00 AM.

Ответ 1

Нет, они идентичны.

default(), для любого типа значения (DateTime - тип значения) всегда будет вызывать конструктор без параметров.

Ответ 2

Если вы хотите использовать значение по умолчанию для параметра DateTime в методе, вы можете использовать только значение по умолчанию (DateTime).

Следующая строка не будет компилироваться:

    private void MyMethod(DateTime syncedTime = DateTime.MinValue)

Эта строка будет компилироваться:

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

Ответ 3

Ответ - нет. Имейте в виду, что в обоих случаях mdDate.Kind = DateTimeKind.Unspecified.

Поэтому может быть лучше сделать следующее:

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

Свойство myDate.Kind доступно только для чтения, поэтому его нельзя изменить после вызова конструктора.