Возможно, это вопрос о типах с нулевым значением.
Где указаны типы значений с нулевым значением (int?
...), хранящиеся в памяти? Сначала я подумал, что это достаточно ясно, поскольку Nullable<T>
- это структура, а это типы значений. Затем я нашел статью Джона Скита "" Память в .NET", в которой говорится:
Обратите внимание, что переменная типа значения может никогда не имеет значения null - it не имеет никакого смысла, поскольку null является эталонного типа, что означает "значение переменной ссылочного типа не является ссылкой на какой-либо объект в все".
Я немного смущен после прочтения этого утверждения. Итак, скажем, у меня есть int? a = null;
. Поскольку int
обычно является типом значения, он каким-то образом хранится внутри struct Nullable<T>
в стеке (я использовал "обычно", потому что я не знаю, что происходит со значением типа, когда он становится допустимым)? Или что-то еще происходит здесь - возможно, в куче?