Когда я объявляю int
значение nullable
int? i=null;
Есть ли i
здесь стать ссылочный тип?
Когда я объявляю int
значение nullable
int? i=null;
Есть ли i
здесь стать ссылочный тип?
Ответы:
Нет, nullable - это структура. Что происходит, так это то, что обнуляемая структура имеет два значения:
int
для int?
, DateTime
для DateTime?
и т. Д.).HasValue
это собственность.)Когда вы устанавливаете значение типа данных, структура изменяется HasValue
на true.
Из Nullable Types (Руководство по программированию на C #) :
Типы, допускающие значение NULL, являются экземплярами структуры System.Nullable.
и
Типы, допускающие значение NULL, представляют собой переменные типа значения, которым можно присвоить значение NULL. Вы не можете создать обнуляемый тип на основе ссылочного типа. (Ссылочные типы уже поддерживают нулевое значение.)
Итак, нет, это не ссылочные типы.
Обнуляемые типы не являются ни типами значений, ни ссылочными типами. Они больше похожи на типы значений, но имеют несколько свойств ссылочных типов.
Естественно, для типов, допускающих значение NULL, может быть установлено значение null
. Кроме того, тип, допускающий значение NULL, не может удовлетворять общему struct
ограничению. Кроме того, когда вы помечаете пустым типом значение HasValue
равно false
, вы получаете null
указатель вместо штучного обнуляемого типа (аналогичная ситуация существует при распаковке).
Эти свойства делают обнуляемые типы ненулевыми типами, но они также не являются ссылочными типами. Это их собственный специальный тип, допускающий значение NULL.
Нет, тип Nullable на самом деле является структурой. Среда выполнения будет интеллектуально обрабатывать установку нулевого значения для вас, создавая вид ссылочного типа, когда это не ....
Типы, допускающие значение NULL, не могут быть ссылочными типами.