Reputation: 4116
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
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
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
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
Reputation: 203834
No, they are identical.
default()
, for any value type (DateTime
is a value type) will always call the parameterless constructor.
Upvotes: 254