私は疑問に思っていました-変数自体を呼び出すだけでなく、null 許容型で .Value メンバーを使用したいのはいつですか?
例えば。
ブール?b = 真;
b を使用する代わりに、b.Value を使用して値を取得するのはなぜですか? .Value 呼び出しはどのような利点または機能を追加しますか?
value プロパティは読み取り専用で、実際の値の型を返します。value プロパティを null にすることはできません。
nullable が値を返すことが予想される場合は、.HasValue を確認してから Value を参照してください。たとえば、Nullable の値を通常の bool に割り当てたい場合は、その値を参照する必要があります。
bool? nullableBool = null;
if (nullableBool.HasValue)
{
bool realBool = nullableBool.Value;
}
ただし、以下はコンパイルされません。
bool? nullableBool = true;
bool realBool = nullableBool; // Won't work
.Value は bool ではなく bool を返しますか? これにより、null 許容型を予期しない関数へのパラメーターとして使用できます。
基になる型のメソッド/プロパティを使用する場合。ブールには実際には適用されません。で説明しましょうDateTime
:
DateTime? d;
int month = d.Value.Month;
d から Month プロパティに直接アクセスすることはできません。DateTime? にはこのプロパティがありません。
私にとっては、有用なプロパティ「HasValue」であるため、それほど価値はありません
唯一の違いは、それらが 2 つの異なるタイプであることです。あなたがブールを持っているなら?次に、null 許容型の bool です。
b.Valueを呼び出すと、実際にはboolではなくbool が返されますか? .
微妙ですが、オブジェクトの非 null 非許容バージョンが必要な場合は、.Value プロパティを使用します。