new DateTime()vs default(DateTime)

时间:2012-12-19 17:19:46

标签: c# datetime default

是否有理由选择其中一种而不是另一种?

DateTime myDate = new DateTime();

DateTime myDate = default(DateTime);

两者都相等1/1/0001 12:00:00 AM

4 个答案:

答案 0 :(得分:174)

不,它们完全相同。

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

答案 1 :(得分:20)

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

以下行不会编译:

    private void MyMethod(DateTime syncedTime = DateTime.MinValue)

这一行将编译:

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

答案 2 :(得分:16)

答案是否定的。请注意,在这两种情况下,mdDate.Kind = DateTimeKind.Unspecified

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

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

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

答案 3 :(得分:-2)

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

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