Nullable変数タイプ-.valueメンバー
質問
私は疑問に思っていました-いつ変数自体を呼び出すのではなく、null許容型で.Valueメンバーを使用したいのですか?
e.g ..
bool? b = true;
単にbを使用するのではなく、b.Valueを使用して値を取得するのはなぜですか? .Value呼び出しはどのような利点や機能を追加しますか?
解決
valueプロパティは読み取り専用で、実際の値タイプを返します。 valueプロパティをnullにすることはできません。
null許容値が返されると予想される場合は、.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;
DateTime?のため、dからMonthプロパティに直接アクセスできません。このプロパティはありません。
私にとっては、プロパティ "HasValue"ほど価値はありません。便利だと思う
唯一の違いは、2つの異なるタイプであることです。 bool?がある場合、null許容型のboolです。
b.Value を呼び出すと、実際には bool ではなく bool が返されます。
微妙ですが、null不可バージョンのオブジェクトが必要な場合は、.Valueプロパティを使用します。
所属していません StackOverflow