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

时间:2015-02-26 11:05:16

标签: c# boolean nullable

在C#中使用可空的bool我发现自己写了很多这个模式

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

是否有更简洁的方式来表达这种说法?我无法使用不可空的bool,因为我无法更改模型,我无法做到这一点

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

因为如果model.some_value为空

,这将抛出空引用异常

我有一个想法: 我可以为像String.IsNullOrEmpty - bool.IsNullOrFalse这样的bool编写扩展方法。这样会很整齐,但我想知道是否有更明显的方法可以做到这一点?

1 个答案:

答案 0 :(得分:0)

使用null-coalescing运算符来处理值为null的情况。

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

来自msdn:

  

?运算符(C#参考)

     

?? operator被称为null-coalescing运算符。它返回   如果操作数不为空,则为左操作数;否则它返回   右手操作。

     

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;
}