Обнуляемые типы не являются ни типами значений, ни ссылочными типами. Они больше похожи на типы значений, но имеют несколько свойств ссылочных типов.
Естественно, обнуляемые типы могут быть установлены на null
. Кроме того, обнуляемый тип не может удовлетворять общему ограничению struct
. Кроме того, когда вы помечаете пустым типом значение HasValue
, равное false
, вы получаете указатель null
вместо упакованного в тип обнуляемого типа (аналогичная ситуация существует при распаковке).
Эти свойства делают обнуляемые типы ненулевыми типами, но они также не являются ссылочными типами. Это их собственный особый тип значения Nullable-value.