nullableint
を に変換するにはどうすればよいですかint
? 以下のように 2 つのタイプの int があるとします。
int? v1;
int v2;
v1
の値を に代入したいのですv2
が、v2 = v1;
エラーが発生します。v1
に変換するにはどうすればいいですかv2
?
ベストアンサー1
これまでの他の回答はすべて正しいのですが、もう少しわかりやすい回答をもう 1 つ追加したいと思います。
v2 = v1 ?? default(int);
Any はNullable<T>
暗黙的にその に変換可能ですT
が、評価される式全体が ValueType への null 割り当てにならないことが条件です。したがって、null 結合演算子は??
三項演算子の単なる構文糖です。
v2 = v1 == null ? default(int) : v1.Value;
...これは、if/else の構文糖衣です。
if(v1==null)
v2 = default(int);
else
v2 = v1.Value;
また、.NET 4.0 以降にはNullable<T>
「GetValueOrDefault()」メソッドがあり、これは基本的に上記の null 結合を実行する null セーフなゲッターであるため、これも機能します。
v2 = v1.GetValueOrDefault();