14

可能重复:
首选哪个:Nullable<>.HasValue 或 Nullable<> == 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

这不是 nullable bool,它是未分配的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 不可为空。要创建可为空的布尔值,您可以执行以下操作:

Nullable<bool> nullableBool;

或速记版本:

bool? nullableBool;

然后可以使用以下方法检查其中任何一个以查看它是否具有值:

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

不推荐您当前的方法。如果您需要可空状态,请使用可空布尔值。如果您想使用标准布尔值,请务必为其分配一个值。我很惊讶您在 Visual Studio 中没有使用该代码出现编译错误。

于 2012-11-09T08:50:57.410 回答
0

试试这个请:

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