Подтвердить что ты не робот

Типы ссылочных типов с нулевыми типами?

Когда я объявляю int как обнуляемый

int? i=null;

Здесь i становится ссылочным типом?

4b9b3361

Ответ 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 на самом деле является структурой. Среда выполнения будет разумно обрабатывать настройку нулевого значения для вас, предоставляя внешний вид ссылочного типа, когда он не...

Ответ 6

Вам не нужно указывать ссылочный тип типа с нулевым значением, поскольку вы можете передать null на своем месте.