Как работают типы с нулевым значением в С#?

Какова разница за кулисами между 'int?' и 'int'? Is 'int?' как-то ссылочный тип?

Ответ 2

В дополнение к "int?" будучи ярлыком для "Nullable", в CLR была включена инфраструктура, чтобы неявно и молча конвертировать между "int"? и "int". Это также означает, что любая операция в боксе будет неявно помещать фактическое значение (т.е. Невозможно вставить Nullable как Nullable, оно всегда приводит либо к размеру в квадрате T, либо к нулевому объекту).

Я столкнулся со многими из этих проблем при попытке создать Nullable, когда вы не знаете T во время компиляции (вы знаете это только во время выполнения). http://bradwilson.typepad.com/blog/2008/07/creating-nullab.html

Ответ 3

Для одного из лучших "за кулисами" обсуждения о типах Nullable вы должны посмотреть на CLR Via С# от Джеффри Рихтера.

Вся глава 18 посвящена подробному обсуждению нулевых типов. Эта книга также отлично подходит для многих других областей встроенных .NET CLR.