Ответ 1
Очевидным способом было бы связать их и использовать .Equals() вместо ==
Проверьте эту альтернативу, это может быть то, что вы хотите - Сравнение равенства между несколькими переменными
У меня есть четыре переменных 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 булевых переменных?
Очевидным способом было бы связать их и использовать .Equals() вместо ==
Проверьте эту альтернативу, это может быть то, что вы хотите - Сравнение равенства между несколькими переменными
if(a==b && a==c && a==d)
Если у вас есть переменное число bools не только 4
var bools = new bool[] { a, b, c, d };
var areAllEqual = bools.Skip(1).All(b=>b==bools[0]);
Я думаю, вы можете добавить их в массив, а затем использовать оператор All
yourboolarray.All(x=>x == a) // compare with any a,b,c,d
вы могли бы использовать побитовые методы для этого
где по целочисленному представлению bools будет равно 0 или 15 (или любое значение, зависящее от количества бит)
может потребоваться некоторая реструктуризация кода, хотя