2009-07-29 6 views
7

変数自体を呼び出すのではなく、いつnullable型で.Valueメンバーを使用したいのですか?null変数タイプ - .valueメンバー

例:

bool? b =真;

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

答えて

13

valueプロパティは読み取り専用で、実際の値の型を返します。 valueプロパティをnullにすることはできません。

nullableが値を返すことが予想される場合は、.HasValueを確認してからValueを参照してください。あなたは普通のブール値にnull許容の値を代入したい場合たとえば、あなたはそれが価値だ参照する必要があります。しかし

bool? nullableBool = null; 

if (nullableBool.HasValue) 
{ 
    bool realBool = nullableBool.Value; 
} 

、以下ないでしょうコンパイル:

bool? nullableBool = true; 
bool realBool = nullableBool; // Won't work 
+0

素晴らしい!それは理にかなっている。どうもありがとう :)) – Valerie

3

.Valueはboolではなくboolを返しますか? nullable型を予期しない関数のパラメータとして使用することができます。

1

唯一の違いは2種類あることです。 ブールをお持ちの場合は?それはboolのヌル可能な型です。

あなたが実際にBOOLなくブール値を返しているb.Valueを呼び出す場合は?

微妙ですが、オブジェクトのnullableバージョンが必要な場合は、.Valueプロパティを使用してください。

+0

誤植。すっきり=微妙。 –

1

私にとって、それはあなたが基になる型のメソッド/プロパティを使用したい場合は、私は

2

に役立つプロパティ「hasValueは」であるように多くの価値ではありません。ブールには本当に適用されません。私はDateTimeで説明してみましょう:

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

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