I am trying to understand one thing in this code:
Nullable<Int32> x = 5;
Nullable<Int32> y = null;
Console.WriteLine("x: HasValue={0}, Value={1}", x.HasValue, x.Value);
Console.WriteLine("y: HasValue={0}, Value={1}", y.HasValue, y.GetValueOrDefault());
And Output is:
x: HasValue=True, Value=5
y: HasValue=False, Value=0
And the thing that I don't understand when you pass null to y, I believe it calls public static implicit operator Nullable<T>(T value) but the definition of this method initializes a new struct passing value which is assigned null however constructor method doesn't check whether it is null or not so it can assign default(T) to value.
How come we can even assign null to struct here and it works fine?
Can you guys what I am missing out here? I don't understand how it just bypassed null and returned default value.
Nullable code inner definition: