检查可空的bool是否为null

时间:2012-11-09 08:42:09

标签: c#

  

可能重复:
  Which is preferred: Nullable<>.HasValue or Nullable<> == null?

我知道有很多次问这样的问题。但我从来没有找到如何检查可空的bool是否为空的答案。 以下是我对此的回答:

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

}else if (nullableBool == false){

}else{

}

但是我想知道是否有更好更直接的方法来减少无用的代码? 感谢。

4 个答案:

答案 0 :(得分:16)

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

您也可以直接将其与null进行比较。

修改

您对nullableBool的声明应该是:

bool? nullableBool;

答案 1 :(得分:4)

这不是可空的bool,它是未分配的bool,您的代码将无法编译。您需要使用bool?Nullable<bool>

bool? nullableBool = null; // or = true or = false
if (nullableBool.HasValue)
{
    if (nullableBool.Value)
        // true
    else
       // false
}
else
    // null

答案 2 :(得分:2)

首先,您使用的bool不可为空。要创建一个可以为空的bool,您可以执行以下操作:

Nullable<bool> nullableBool;

或速记版本:

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

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

不建议您采用当前的方法。如果你需要一个可以为空的状态,那么使用可以为空的bool。如果您想使用标准bool,请务必为其分配值。我很惊讶你没有在Visual Studio中使用该代码获得编译错误。

答案 3 :(得分:0)

试试这个plz:

if (!nullableBool.HasValue)
{
    // your code
}