10

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

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 布尔变量是否相等的正确方法是什么?

4

4 回答 4

7
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]);
于 2012-12-31T09:35:30.947 回答
3

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


检查这个替代方案,它可能是你想要的 -多个变量之间的平等比较

于 2012-12-31T09:35:42.527 回答
2

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

yourboolarray.All(x=>x == a) // compare with any a,b,c,d
于 2012-12-31T09:47:07.237 回答
1

您可以考虑为此使用按位方法

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

虽然可能需要一些代码重组

于 2012-12-31T11:01:20.430 回答