我有四个bool变量,比如说:
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布尔变量是否相等的正确方法是什么?
答案 0 :(得分:7)
if(a==b && a==c && a==d)
如果你有不同数量的bool,不仅仅是4
var bools = new bool[] { a, b, c, d };
var areAllEqual = bools.Skip(1).All(b=>b==bools[0]);
答案 1 :(得分:3)
答案 2 :(得分:2)
我猜你可以把它们添加到数组中,然后使用All运算符
yourboolarray.All(x=>x == a) // compare with any a,b,c,d
答案 3 :(得分:1)
您可以考虑为此
使用按位方法其中bools的整数表示将等于0或15(或任何值取决于位数)
可能需要进行一些代码重组