if语句中的空条件布尔值

时间:2017-06-13 09:34:20

标签: c# winforms events boolean null-conditional-operator

我有@Value("${blacklist:}") private String[] blacklist= new String[0]; ,返回event。为了确保只有在有人监听的情况下才触发事件,我使用空条件运算符(questionmark)来调用它。 但是,这意味着我必须将null条件运算符添加到返回的布尔值中。这意味着我无法弄清楚如何在if语句中使用它。有谁知道如何处理这个?

boolean

4 个答案:

答案 0 :(得分:7)

您可以使用

if (isValid.GetValueOrDefault())
如果falseisValid

将提供null

或使用??运算符

if (isValid ?? false)

如果不是null则返回左操作数的值,否则返回右操作数的值。所以基本上是

的简写
if (isValid == null ? isValid : false)

答案 1 :(得分:2)

您可以使用:

if (isValid.HasValue && isValid.Value)

答案 2 :(得分:1)

一个选项是测试,isValid有一个值:

if (isValid.HasValue && (bool)isValid)

另一个选择是在没有人收听您的活动时给isValid一个默认值。这可以使用空合并运算符来完成:

bool isValid = ValidateStuff?.Invoke() ?? true;   // assume it is valid when nobody listens

答案 3 :(得分:0)

问题是,在 Nullable bool?的情况下,您有three-valued logictruefalsenull因此你必须明确地 null视为true,例如:

   if (isValid != false)     // either true or null
     GoToNextStep?.Invoke();

null应被视为false

   if (isValid == true)      // only true
     GoToNextStep?.Invoke();