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