可能重复:
Which is preferred: Nullable<>.HasValue or Nullable<> == null?
我知道有很多次问这样的问题。但我从来没有找到如何检查可空的bool是否为空的答案。 以下是我对此的回答:
bool? nullableBool;
if (nullableBool == true){
}else if (nullableBool == false){
}else{
}
但是我想知道是否有更好更直接的方法来减少无用的代码? 感谢。
答案 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
}