7

私は疑問に思っていました-変数自体を呼び出すだけでなく、null 許容型で .Value メンバーを使用したいのはいつですか?

例えば。

ブール?b = 真;

b を使用する代わりに、b.Value を使用して値を取得するのはなぜですか? .Value 呼び出しはどのような利点または機能を追加しますか?

4

5 に答える 5

13

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
于 2009-07-29T20:16:02.510 に答える
3

.Value は bool ではなく bool を返しますか? これにより、null 許容型を予期しない関数へのパラメーターとして使用できます。

于 2009-07-29T20:09:27.457 に答える
2

基になる型のメソッド/プロパティを使用する場合。ブールには実際には適用されません。で説明しましょうDateTime

DateTime? d;
int month = d.Value.Month;

d から Month プロパティに直接アクセスすることはできません。DateTime? にはこのプロパティがありません。

于 2009-07-29T20:15:21.123 に答える
1

私にとっては、有用なプロパティ「HasValue」であるため、それほど価値はありません

于 2009-07-29T20:14:53.233 に答える
1

唯一の違いは、それらが 2 つの異なるタイプであることです。あなたがブールを持っているなら?次に、null 許容型の bool です。

b.Valueを呼び出すと、実際にはboolではなくbool が返されますか? .

微妙ですが、オブジェクトの非 null 非許容バージョンが必要な場合は、.Value プロパティを使用します。

于 2009-07-29T20:09:37.660 に答える