检查可空的bool是否为null

可能重复:
首选:Nullable 。HasValue或Nullable == null?

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

bool? nullableBool; if (nullableBool == true){ }else if (nullableBool == false){ }else{ } 

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

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

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

编辑:

你的nullableBool声明应该是:

 bool? nullableBool; 

这不是一个可以为空的bool ,它是一个未分配的bool ,你的代码将无法编译。 你需要用bool? 或者Nullable

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

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

 Nullable nullableBool; 

或速记版本:

 bool? nullableBool; 

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

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

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

试试这个plz:

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