我有@Value("${blacklist:}")
private String[] blacklist= new String[0];
,返回event
。为了确保只有在有人监听的情况下才触发事件,我使用空条件运算符(questionmark)来调用它。
但是,这意味着我必须将null条件运算符添加到返回的布尔值中。这意味着我无法弄清楚如何在if语句中使用它。有谁知道如何处理这个?
boolean
答案 0 :(得分:7)
您可以使用
if (isValid.GetValueOrDefault())
如果false
为isValid
,将提供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 logic:true
,false
和null
因此你必须明确地将 null
视为true
,例如:
if (isValid != false) // either true or null
GoToNextStep?.Invoke();
或null
应被视为false
:
if (isValid == true) // only true
GoToNextStep?.Invoke();