C# 检查四个布尔变量的值是否相等,是否不明显?

C# 检查四个布尔变量的值是否相等,是否不明显?,c#,boolean,C#,Boolean,我有四个布尔变量,比如: bool a=true; bool b=false; bool c=true; bool d=false; 然后我要检查这四个是否相等。但是, Console.WriteLine(true == false == true == false); true 为什么会这样?我认为这是因为方程的求值顺序,从左到右: ((true == false) == true) == false (false == true) == false false == false true

我有四个布尔变量,比如:

bool a=true;
bool b=false;
bool c=true;
bool d=false;
然后我要检查这四个是否相等。但是,

Console.WriteLine(true == false == true == false);
true
为什么会这样?我认为这是因为方程的求值顺序,从左到右:

((true == false) == true) == false
(false == true) == false
false == false
true
那么,检查所有N>2个布尔变量是否相等的正确方法是什么

if(a==b && a==c && a==d)
如果你有可变数量的布尔值,而不仅仅是4

var bools = new bool[] { a, b, c, d };
var areAllEqual = bools.Skip(1).All(b=>b==bools[0]);

一个显而易见的方法是将它们配对,并使用.Equals()而不是==



选中此选项,它可能是您想要的-

我想您可以添加它们,将它们放入一个数组中,然后使用All运算符

yourboolarray.All(x=>x == a) // compare with any a,b,c,d

可以考虑使用位方法来处理这个

其中,布尔的整数表示等于0或15(或任何值,取决于位数)


可能需要一些代码重组,但您的假设是正确的。如果在整个表达式中使用相同的运算符。。。运算符优先级没有任何意义。。它们都是一样的..+1哦,你已经提到了数组(你也可以用a代替bools[0],因为你已经有了值)什么?不,如果你想把它们转换成整数,你可以数一数。但实际上,值应该保留在其“自然”类型中,而不是像这样强制转换。