私はこのコードの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かどうかをチェックしないので、に割り当てることができます。value
null
default(T)
value
どうしてここで構造体にnullを割り当てることができ、それはうまく機能するのでしょうか?
私がここで見逃しているものを皆さんに教えていただけますか?どうやってバイパスnull
してデフォルト値を返したのかわかりません。
null許容コードの内部定義: