Типы ссылочных типов с нулевыми типами?
Когда я объявляю int
как обнуляемый
int? i=null;
Здесь i
становится ссылочным типом?
Ответы
Ответ 1
Нет, nullable является структурой. Происходит то, что структура с нулевым значением имеет два значения:
- Значение типа данных (
int
для int?
, DateTime
для DateTime?
и т.д.).
- Логическое значение, указывающее, установлено ли значение типа данных. (
HasValue
- это свойство.)
Когда вы устанавливаете значение типа данных, структура меняет HasValue
на true.
Что такое нулевое значение
Ответ 2
От Nullable Types (Руководство по программированию на С#):
Nullable types - это экземпляры System.Nullable struct.
и
Nullable types представляют переменные типа значения, которым может быть присвоено значение null. Вы не можете создать тип с нулевым значением на основе ссылочного типа. (Типы ссылок уже поддерживают нулевое значение.)
Таким образом, они не являются ссылочными типами.
Ответ 3
Nullable types не являются ни типами значений, ни ссылочными типами. Они больше похожи на типы значений, но имеют несколько свойств ссылочных типов.
Естественно, типы с нулевым значением могут быть установлены на null
. Кроме того, тип с нулевым значением не может удовлетворять общему ограничению struct
. Кроме того, когда вы устанавливаете нулевой тип с HasValue
равным false
, вы получаете указатель null
вместо типа с нулевым значением (аналогичная ситуация существует с распаковкой).
Эти свойства делают типы значений с нулевым значением неценными, но они также не являются ссылочными типами. Они являются их собственным специальным типом с нулевым значением.
Ответ 4
Нет, тип Nullable на самом деле является структурой. Среда выполнения будет разумно обрабатывать настройку нулевого значения для вас, предоставляя внешний вид ссылочного типа, когда он не...
Ответ 5
Невозможные типы не могут быть ссылочными типами.
http://msdn.microsoft.com/en-us/library/2cf62fcy.aspx
Ответ 6
Вам не нужно указывать ссылочный тип типа с нулевым значением, поскольку вы можете передать null на своем месте.