Когда я объявляю 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, не могут быть ссылочными типами.