Мне любопытно, почему работает следующий код (выполняется под отладчиком VS):
int? x = null;
null
x.HasValue
false
Если x
действительно имеет значение null, какой экземпляр выполняет HasValue
см.? HasValue
реализован как метод расширения, или это специальный случай компилятора, чтобы заставить его волшебным образом работать?