让我们建立一个真值表的
(!(cluster.Leader?.IsRemote ?? true))
Run Code Online (Sandbox Code Playgroud)
构造(请注意,我们需要考虑三个值:true, false, null):
(!(cluster.Leader?.IsRemote ?? true)) : Result
----------------------------------------------
true : false
false : true <- the only true we have
null : false
Run Code Online (Sandbox Code Playgroud)
所以,如果你正在寻找一个简化,你可以把它作为
(cluster.Leader?.IsRemote == false)
Run Code Online (Sandbox Code Playgroud)
这意味着如果cluster.Leader?.IsRemote是null那么认为是真的?? true
有效地null ?? true等于true.
因此,如果您的leader值为 null,则整个语句将返回 false)。没有?? null你的语句甚至不会编译,因为!null意味着什么。