Consider the following code:
DateTime? ndate = null;
Console.WriteLine(ndate.HasValue);
I would have expected a NullReferenceException, but HasValue will indeed return false. However, since ndate is null, how does the property invocation succeed, since there is no object to invoke the property HasValue on?
Best Answer
Technically, "ndate" is not null - it is a value type, with it's value specified as being null.
When you write
DateTime?
, this is just shorthand forNullable<DateTime>
, which is a struct. There is no way for this to technically be null, since it's not a reference type.