14

重複の可能性:
どちらが優先されますか: Nullable<>.HasValue または Nullable<> == null?

このような質問が何度も寄せられていることは承知しています。しかし、nullable bool が null かどうかを確認する方法に対する答えは見つかりませんでした。これに対する私が持っている答えは次のとおりです。

bool? nullableBool;
if (nullableBool == true){

}else if (nullableBool == false){

}else{

}

しかし、無駄なコードを最小限に抑えるために、より適切でより直接的な方法があるかどうか疑問に思っていましたか? ありがとう。

4

4 に答える 4

25
if (!nullableBool.HasValue)
{
    // null
}

と直接比較することもできますnull

于 2012-11-09T08:43:34.237 に答える
8

それは nullableboolではなく、割り当てられていboolないため、コードはコンパイルされません。bool?またはを使用する必要がありますNullable<bool>

bool? nullableBool = null; // or = true or = false
if (nullableBool.HasValue)
{
    if (nullableBool.Value)
        // true
    else
       // false
}
else
    // null
于 2012-11-09T08:47:17.903 に答える
3

まず、使用した bool は null 可能ではありません。null 許容の bool を作成するには、次のいずれかを実行できます。

Nullable<bool> nullableBool;

または簡略版:

bool? nullableBool;

次に、これらのいずれかをチェックして、以下を使用して値があるかどうかを確認できます。

if(nullableBool.HasValue)
{
   //nullableBool has been assigned a value
}

現在のアプローチはお勧めできません。null 許容状態が必要な場合は、null 許容 bool を使用します。標準の bool を使用する場合は、必ず値を割り当ててください。そのコードを使用すると、Visual Studio でコンパイル エラーが発生しないことに驚きました。

于 2012-11-09T08:50:57.410 に答える
0

このplzを試してください:

if (!nullableBool.HasValue)
{
    // your code
}
于 2012-11-09T08:46:25.813 に答える