如何简化C#中可空布尔值的使用

voi*_*ter 0 c# boolean nullable ternary-operator

以下是一些入门示例代码:

class Foo
{
   public bool? IsValid { get; set; }
}

// later in some other function...
void DoStuff( Foo myFoo )
{
   myControlState.Visible = myFoo.IsValid.HasValue ? myFoo.IsValid.Value : false;
}
Run Code Online (Sandbox Code Playgroud)

我遇到很多情况,我必须使用像上面这样的三元运算符来正确使用可空的bool.如果有一种稍微简单的方法来获取bool的值而不抛出异常,那将是很好的.上面的代码似乎是直截了当的,但是有更复杂的情况,这最终会成为很多代码.我希望有一些简单的东西:

myControlState.Visible = GetNullableValue<bool>( myFoo );
Run Code Online (Sandbox Code Playgroud)

有没有人有三元运算符的更清洁的替代品?

Bal*_*a R 7

你可以使用null-coalescing运算符,如果这使它更具可读性.

myControlState.Visible = myFoo.IsValid ?? false;
Run Code Online (Sandbox Code Playgroud)

  • @RobertDailey合作减少 (2认同)