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

时间:2012-12-31 09:33:34

标签: c# boolean

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

4 个答案:

答案 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)

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


检查此替代方案,可能是您想要的 - Equality comparison between multiple variables

答案 2 :(得分:2)

我猜你可以把它们添加到数组中,然后使用All运算符

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

答案 3 :(得分:1)

您可以考虑为此

使用按位方法

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

可能需要进行一些代码重组