Я пытаюсь понять одну вещь в этом коде:
Nullable x = 5;
Nullable y = null;
Console.WriteLine("x: HasValue={0}, Value={1}", x.HasValue, x.Value);
Console.WriteLine("y: HasValue={0}, Value={1}", y.HasValue, y.GetValueOrDefault());
И вывод:
x: HasValue=True, Value=5
y: HasValue=False, Value=0
И то, что я не понимаю, когда вы передаете null
к y
, я полагаю, что он вызывает общедоступный статический неявный оператор Nullable
, но определение этого метода инициализирует новую структуру, передавая значение
, которая присваивается null
, однако метод конструктора не проверяет, является ли он нулевым или нет, поэтому он может присвоить default(T)
значение .
Как получилось мы можем даже присвоить null структуре здесь, и это работает нормально?
Можете ли вы, ребята, что я здесь упускаю? Я не понимаю, как это просто обошло null
и вернуло значение по умолчанию.
Внутреннее определение нулевого кода: