Если вы посмотрите документацию по .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, верно? Очевидно, это как-то связано с общим.
Что мне здесь не хватает? Есть что-то в спецификации языка по этому поводу?
Спасибо.