Обнуляемые типы <> - это BCL, CLR или обе реализации? - PullRequest
4 голосов
/ 14 января 2011

Некоторое время назад я думал, что типы значений Nullable <> - это классы, инкапсулирующие типы значений и тип bool для HasValue. С некоторым неявным оператором приведения к null, только что реализованным в BCL.

Но как быть структурой, как этого можно достичь? Nullable <> struct является «специальной» для CLR?

Ответы [ 3 ]

8 голосов
/ 14 января 2011

Nullable<T> определяется как обычная структура, но в CLR есть специальные ловушки для блокирования / распаковки экземпляра [mscorlib]System.Nullable`1 в ноль согласно свойству HasValue. Подробнее об этом здесь

0 голосов
/ 14 января 2011

Nullable<> - это структура, реализованная в mscorlib.

Одна особенность в компиляторе C #, который распознает X? как псевдоним для Nullable<X>.

0 голосов
/ 14 января 2011

Вот статья MSDN о Nullable Types.

http://msdn.microsoft.com/en-us/library/1t3y8s4s(v=VS.100).aspx

Я не уверен, что вы пытаетесь сделать с Nullable <>, если только вы не ошиблись.понимание того, что обнуляемые типы являются экземплярами структуры System.Nullable<T>.

...