10

私は4つのbool変数を持っています。

bool a=true;
bool b=false;
bool c=true;
bool d=false;

次に、これら 4 つが等しいことを確認します。でも;

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 に答える