私はこのコードの1つのことを理解しようとしています:
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());
そして出力は次のとおりです。
x: HasValue=True, Value=5
y: HasValue=False, Value=0
nullそして、あなたがに渡すときに私が理解していないことyは、それが呼び出すと信じていますが、このメソッドの定義は割り当てられpublic static implicit operator Nullable<T>(T value)た新しい構造体の受け渡しを初期化しますが、コンストラクターメソッドはそれがnullかどうかをチェックしないので、に割り当てることができます。valuenulldefault(T)value
どうしてここで構造体にnullを割り当てることができ、それはうまく機能するのでしょうか?
私がここで見逃しているものを皆さんに教えていただけますか?どうやってバイパスnullしてデフォルト値を返したのかわかりません。
null許容コードの内部定義: