2009-09-05 110 views
0

在C#中,例如,當我比較兩個可爲空布爾(bool?)我得到以下結果:如何確定可空布爾邏輯運算符的結果?

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

的問題是,我不明白這些成果怎麼來的,有什麼規則,我可以用於確定兩個布爾運算符上邏輯運算符的結果,當其中一個爲空時?

回答

11

這個想法是,「空」在這裏的意思是「未知」,或「沒有足夠的信息」。所以如果答案取決於未知的價值,答案本身是未知的。如果答案將與未知值相同(例如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