如何确定可空布尔逻辑运算符的结果?

问题描述:

在C#中,例如,当我比较两个可为空布尔(bool?)我得到以下结果:如何确定可空布尔逻辑运算符的结果?

true & null = null 
false & null = false 
true | null = true 
false | null = null 

的问题是,我不明白这些成果怎么来的,有什么规则,我可以用于确定两个布尔运算符上逻辑运算符的结果,当其中一个为空时?

这个想法是,“空”在这里的意思是“未知”,或“没有足够的信息”。所以如果答案取决于未知的价值,答案本身是未知的。如果答案将与未知值相同(例如true | null),那么你仍然可以。

认为它是这样的:

y = true & x; // the result will be the same as the value of x (it depends on x) 
y = true | x; // the result will be true whatever x is 
+0

谢谢,我明白了! – 2009-09-05 06:01:14

+0

我认为你的意思是'它必须是x''而不是'它必须是真的'在第一个注释中,即y将是任何x将会是。 – GDS 2016-12-06 09:32:49

+0

@GDS:嗯,我的意思是“x必须是真的,因为y是真实的”,但为了清晰我会编辑。 – 2016-12-06 09:33:45