Could someone explain why this works in C#.NET 2.0:
Nullable<DateTime> foo;
if (true)
foo = null;
else
foo = new DateTime(0);
…but this doesn't:
Nullable<DateTime> foo;
foo = true ? null : new DateTime(0);
The latter form gives me an compile error "Type of conditional expression cannot be determined because there is no implicit conversion between '<null>' and 'System.DateTime'."
Not that I can't use the former, but the second style is more consistent with the rest of my code.
Best Answer
The compiler is telling you that it doesn't know how convert
null
into aDateTime
.The solution is simple:
Note that
Nullable<DateTime>
can be writtenDateTime?
which will save you a bunch of typing.