Какова разница за кулисами между 'int?' и 'int'? Is 'int?' как-то ссылочный тип?
Как работают типы с нулевым значением в С#?
Ответ 1
? обертывает тип значения (T) в Nullable <T> структура:
Ответ 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.