RJP
RJP

Reputation: 4116

new DateTime() vs default(DateTime)

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.

Upvotes: 257

Views: 312861

Answers (4)

gBusato
gBusato

Reputation: 871

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

Upvotes: -4

Ben C
Ben C

Reputation: 199

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.

Upvotes: 18

Tomer
Tomer

Reputation: 314

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))

Upvotes: 27

Servy
Servy

Reputation: 203834

No, they are identical.

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

Upvotes: 254

Related Questions