微软更喜欢虚假价值?

Roy*_*mir 4 c# boolean-logic nullable .net-4.0

我正在读Jon Skeet的书.(#4)

但有一件事(其中包括)引起了我的注意:

话题:布尔?

他在一张桌子上写道:( X,Y是bool?)

X      |    Y     |   X & Y
---------------------------
true        null       null
Run Code Online (Sandbox Code Playgroud)

好吧...所以null是决定的人.bool操作员在这里失去了.

X      |    Y     |   X & Y
---------------------------
false      null       false
Run Code Online (Sandbox Code Playgroud)

为什么? 为什么这里的bool操作数正在考虑中,而在上一个样本中,是谁决定了结果的null?

似乎真假在不同的地方有朋友.... :)

Hen*_*man 10

发音nullunknown.

true  & unknown => unknown
false & unknown => false       because the second operand does not matter. 
Run Code Online (Sandbox Code Playgroud)

当然还有OR的镜像表:

true  | unknown => true        because the second operand does not matter. 
false | unknown => unknown       
Run Code Online (Sandbox Code Playgroud)

它适用于&&||为好.