new DateTime() vs default(DateTime)

2019-03-08 02:31发布

Is there a reason to choose one of these over the other?

DateTime myDate = new DateTime();

or

DateTime myDate = default(DateTime);

Both of them are equal 1/1/0001 12:00:00 AM.

4条回答
相关推荐>>
2楼-- · 2019-03-08 03:01

The simpliest way to understand it is that DateTime is a struct. When you initialize a struct it's initialize to it's minimum value : DateTime.Min

Therefore there is no difference between default(DateTime) and new DateTime() and DateTime.Min

查看更多
Emotional °昔
3楼-- · 2019-03-08 03:15

If you want to use default value for a DateTime parameter in a method, you can only use default(DateTime).

The following line will not compile:

    private void MyMethod(DateTime syncedTime = DateTime.MinValue)

This line will compile:

    private void MyMethod(DateTime syncedTime = default(DateTime))
查看更多
我想做一个坏孩纸
4楼-- · 2019-03-08 03:21

The answer is no. Keep in mind that in both cases, mdDate.Kind = DateTimeKind.Unspecified.

Therefore it may be better to do the following:

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

The myDate.Kind property is readonly, so it cannot be changed after the constructor is called.

查看更多
倾城 Initia
5楼-- · 2019-03-08 03:26

No, they are identical.

default(), for any value type (DateTime is a value type) will always call the parameterless constructor.

查看更多
登录 后发表回答