Как обнуляемые типы работают в C #? - PullRequest
19 голосов
/ 21 сентября 2008

В чем разница между «int»? и 'int'? Это int? какой-то ссылочный тип?

Ответы [ 3 ]

38 голосов
/ 21 сентября 2008

? оборачивает тип значения (T) в Nullable struct:

http://msdn.microsoft.com/en-us/library/b3h38hb0.aspx

5 голосов
/ 21 сентября 2008

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

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

4 голосов
/ 21 сентября 2008

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...