寻找布尔语句的解释

c#

我在我正在使用的库中发现了这个语句。它应该检查集群中的当前节点是否是领导者。这是声明:(!(cluster.Leader?.IsRemote ?? true))

为什么不直接使用(cluster.Leader?.IsRemote)?(忽略 ! 运算符,我知道它是如何工作的)

这种方法有什么好处吗?

回答

让我们建立一个真值表

 (!(cluster.Leader?.IsRemote ?? true))

构造(请注意,我们需要考虑三个值:true, false, null):

 (!(cluster.Leader?.IsRemote ?? true)) : Result 
 ----------------------------------------------
                                  true : false
                                 false :  true <- the only true we have
                                  null : false

所以,如果你正在寻找一个简化,你可以把它作为

 (cluster.Leader?.IsRemote == false)


回答

这意味着如果cluster.Leader?.IsRemotenull那么认为是真的?? true

有效地null ?? true等于true.

因此,如果您的leader值为 null,则整个语句将返回 false)。没有?? null你的语句甚至不会编译,因为!null意味着什么。


以上是寻找布尔语句的解释的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>