Nullable не является ValueType

Если вы посмотрите документацию по .NET Nullable, вы увидите:

   struct Nullable<T>

Обратите внимание, что это struct , а не класс.

Кажется, что struct Nullable - это не ValueType, что очень неожиданно. Следующий код печатает False:

   Type nullableType = typeof(Nullable<int>);
   Console.WriteLine(nullableType is ValueType);

Если вы посмотрите на сгенерированный IL, вы увидите, что этот компилятор определил nullableType как ValueType во время компиляции. Но как это может быть ValueType, если это структура? Все структуры являются ValueTypes, верно? Очевидно, это как-то связано с общим.

Что мне здесь не хватает? Есть что-то в спецификации языка по этому поводу?

Спасибо.

8
задан Tom Baxter 13 July 2011 в 03:56
поделиться