我知道类似的问题已经被问了很多次。但我从来没有找到一个答案来检查可空布尔值是否为 null。 这里是我对此的回答:
bool? nullableBool;
if (nullableBool == true){
}else if (nullableBool == false){
}else{
}
但我在想,是否有更好、更直接的方法来最小化无用代码呢?谢谢。
我知道类似的问题已经被问了很多次。但我从来没有找到一个答案来检查可空布尔值是否为 null。 这里是我对此的回答:
bool? nullableBool;
if (nullableBool == true){
}else if (nullableBool == false){
}else{
}
但我在想,是否有更好、更直接的方法来最小化无用代码呢?谢谢。
if (!nullableBool.HasValue)
{
// null
}
你也可以直接将它与null
进行比较。
bool
而不是bool?
,而且这个问题(在编辑之前)没有提到使用可空类型,就编译而言,那根本行不通。 - musefan那不是可空的 bool
,它是未分配的 bool
,你的代码会编译不通过。你需要使用 bool?
或 Nullable<bool>
。
bool? nullableBool = null; // or = true or = false
if (nullableBool.HasValue)
{
if (nullableBool.Value)
// true
else
// false
}
else
// null
首先,您使用的布尔值是不可空的。要创建可空布尔值,可以执行以下操作之一:
Nullable<bool> nullableBool;
bool? nullableBool;
可以使用以下方法检查任何一个值是否有值:
if(nullableBool.HasValue)
{
//nullableBool has been assigned a value
}
您当前的方法并不被推荐。如果需要可空状态,请使用可空布尔类型。如果要使用标准布尔类型,则确保给它赋一个值。我很惊讶您在Visual Studio中没有收到编译错误。
if (!nullableBool.HasValue)
{
// your code
}