231

有理由选择其中一个而不是另一个吗?

DateTime myDate = new DateTime();

或者

DateTime myDate = default(DateTime);

他们两个是平等的1/1/0001 12:00:00 AM

4

4 回答 4

233

不,它们是相同的。

default(),对于任何值类型(DateTime是值类型)将始终调用无参数构造函数。

于 2012-12-19T17:20:45.837 回答
25

如果要在方法中为 DateTime 参数使用默认值,则只能使用 default(DateTime)。

以下行将无法编译:

    private void MyMethod(DateTime syncedTime = DateTime.MinValue)

这一行将编译:

    private void MyMethod(DateTime syncedTime = default(DateTime))
于 2015-11-17T08:28:35.567 回答
17

答案是不。请记住,在这两种情况下,mdDate.Kind = DateTimeKind.Unspecified.

因此,最好执行以下操作:

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

myDate.Kind属性是只读的,因此在调用构造函数后无法更改。

于 2014-06-29T17:05:20.553 回答
-4

理解它的最简单方法是 DateTime 是一个结构。当您初始化一个结构时,它会初始化为它的最小值:DateTime.Min

default(DateTime)因此和new DateTime()和之间没有区别DateTime.Min

于 2019-02-27T15:50:37.470 回答