在 C# 中处理 bool 的一种更简洁的方法

A neater way of handling bools in C#

在 C# 中使用可为 null 的 bool,我发现自己经常写这种模式

if(model.some_value == null || model.some_value == false)
{
    // do things if some_value is not true
}

有没有更简洁的表达方式?我不能使用不可为 null 的布尔值,因为我不能更改模型,而且我不能这样做

if(model.some_value != true)
{
    // do things if some_value is not true
}

因为如果 model.some_value 为 null

这将抛出空引用异常

我有一个想法: 我可以为像 String.IsNullOrEmpty - bool.IsNullOrFalse 这样的 bool 写一个扩展方法。这已经足够简洁了,但我想知道是否已经有一些更明显的方法可以做到这一点?

使用空合并运算符处理值为空的情况。

if(model.some_value ?? false != true)
{
    // do things if some_value is not true
}

来自 msdn:

?? Operator (C# Reference)

The ?? operator is called the null-coalescing operator. It returns the left-hand operand if the operand is not null; otherwise it returns the right hand operand.

https://msdn.microsoft.com/en-us/library/ms173224.aspx

或者,switch 也可以。

switch(model.some_value)
{
    case false:
    case null:
    // do things if some_value is not true
    break;
}