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

C# 如何确定逻辑运算符在可空布尔上的结果?,c#,.net,operators,boolean,C#,.net,Operators,Boolean,例如,在C#中,当我比较两个可为空的布尔值(bool?)时,我得到以下结果: true & null = null false & null = false true | null = true false | null = null 问题是我无法理解这些结果是如何产生的,当其中一个布尔值为null时,我可以使用什么规则来确定两个布尔值上逻辑运算符的结果?这里的想法是“null”表示“未知”或“信息不足”。因此,如果答案取决于未知值,那么答案本身就是未知的。如果无论未知值是什么

例如,在C#中,当我比较两个可为空的布尔值(
bool?
)时,我得到以下结果:

true & null = null
false & null = false
true | null = true
false | null = null
问题是我无法理解这些结果是如何产生的,当其中一个布尔值为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

我想你的意思是
它必须是x
而不是
它必须是真的
在第一条评论中,即y将是x将是什么。@GDS:我的意思是“x必须是真的,y才是真的”,但为了清楚起见,我将进行编辑。