質問

私は疑問に思っていました-いつ変数自体を呼び出すのではなく、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プロパティを使用します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top