Рассмотрим следующий код:
DateTime? ndate = null;
Console.WriteLine(ndate.HasValue);
Я бы ожидал исключение NullReferenceException, но HasValue действительно вернет false. Однако, поскольку ndate имеет значение null, как происходит вызов свойства, поскольку нет объекта для вызова свойства HasValue?