Как BrokenGlass сказал, int?
на самом деле Nullable<T>
.
Структуры всегда содержат значение. Обычно вы не можете установить структурную переменную на ноль, но в этом особом случае вы можете, по существу, установить ее на default(Nullable<T>)
. Это устанавливает его содержимое на ноль, а не на саму переменную.
Когда вы устанавливаете Nullable<T>
в значение, он использует неявный оператор для установки Value = value
в новое значение и HasValue = true
.
Когда вы устанавливаете Nullable<T>
на ноль, он обнуляет все поля структуры. Для поля bool
, такого как HasValue
, null == false
.
Поскольку переменная Nullable<T>
является структурой, на нее всегда можно ссылаться, поскольку ее содержимое является нулевым, а не самой переменной.
Дополнительная информация о структурах приведена в разделе «Примечания» на странице MSDN. struct .