如果您要在 if 语句中使用 bool? ,我发现最简单的方法是与 true 或 false 进行比较 .
bool? b = ...;
if (b == true) { Debug.WriteLine("true"; }
if (b == false) { Debug.WriteLine("false"; }
if (b != true) { Debug.WriteLine("false or null"; }
if (b != false) { Debug.WriteLine("true or null"; }
当然,您也可以与null进行比较 .
bool? b = ...;
if (b == null) { Debug.WriteLine("null"; }
if (b != null) { Debug.WriteLine("true or false"; }
if (b.HasValue) { Debug.WriteLine("true or false"; }
//HasValue and != null will ALWAYS return the same value, so use whatever you like.
10 回答
你最终必须决定null bool代表什么 . 如果
null
应为false
,则可以执行以下操作:要么:
要么:
您可以使用null-coalescing operator:
x ?? something
,其中something
是x
为null
时要使用的布尔值 .例:
newBool
将是假的 .您可以使用
Nullable{T}
GetValueOrDefault()
方法 . 如果为null,则返回false .最简单的方法是使用null合并运算符:
??
具有可空值的
??
通过检查提供的可空表达式来工作 . 如果可以为null的表达式有一个值,那么它的值将被使用,否则它将使用??
右侧的表达式如果您要在
if
语句中使用bool?
,我发现最简单的方法是与true
或false
进行比较 .当然,您也可以与null进行比较 .
如果您要将其转换为bool以传递给应用程序的其他部分,那么Null Coalesce运算符就是您想要的 .
如果您已经检查了null,并且只想要该值,则访问Value属性 .
完整的方式是:
或者您可以使用测试特定值
就像是:
这个答案适用于您只想在条件下测试
bool?
的用例 . 它也可以用来获得正常的bool
. 这是一个替代我个人发现比coalescing operator ??
更容易阅读 .如果要测试条件,可以使用它
只有当
bool?
为真时,上述if才会成立 .您也可以使用它从
bool?
分配常规bool
女巫是一样的
这是主题的有趣变化 . 在第一眼和第二眼,你会假设真正的分支被采取 . 不是这样!
得到你想要的方法是这样做: