C# int? i - ссылочный тип или структурный?


#1

При создании переменной int? i типа nullable она становится ссылочной или всё же остаётся структурной? А то после этого ей можно присваивать null. что зануляет ссылку в переменной (что присуще ссылочным типам)....


#2

переменная останется структурного типа, так что хранится она будет в стеке. Причиной этого будет, то что int? это сокращенная форма Nullable, а Nullable - это структура имеющее отдельное свойство HasValue типа bool для определения присутствует ли в переменной какое-то значение или она равна null. Если переменная равна null, то свойство HasValue принимает false, а когда ей присваивают значение - true. На самом деле, когда мы пишем int? i = null; мы не самой переменной присваиваем значение null, а определяем, что в переменная не должна в этот момент хранить в себе значение, то есть свойству HasValue присваиваем false.