Почему можно использовать int? установить значение null иметь свойства экземпляра?

Мне любопытно, почему работает следующий код (выполняется под отладчиком VS):

int? x = null;
null
x.HasValue
false

Если x действительно имеет значение null, какой экземпляр выполняет HasValue см.? HasValue реализован как метод расширения, или это специальный случай компилятора, чтобы заставить его волшебным образом работать?

7
задан Mike Christensen 20 December 2011 в 20:20
поделиться