2

3つのブール変数があります。3つすべてが真であるか、3つすべてが偽であるかを確認する必要があります。

私はこれを「ダミー」の方法で行うことができます:

bool areSame = false; 
if(a && b && c)    
    areSame = true; 
else if (!a && !b && !c)
    areSame = true;

他にもっとエレガントな解決策があるかどうか知りたいのですが。

4

7 に答える 7

6

ブール値でも等式演算子を使用できます。

bool areSame = (a == b) && (a == c);
于 2012-06-29T14:17:03.460 に答える
6

確かに、ここでは3つだけを比較していますが、将来についてはどうでしょうか。将来的には、10個のブール値を互いに比較する必要があるかもしれません。

    class Program
        {
            static void Main(string[] args)
            {
                Console.WriteLine(false.AllEqual(false, false)); 
                Console.WriteLine(true.AllEqual(false, false));
                Console.WriteLine(true.AllEqual(true, false));

                bool a = true;
                bool b = false;
                bool c = true;
                Console.WriteLine(a.AllEqual(b, c));
                b = true;
                Console.WriteLine(a.AllEqual(b, c));
                Console.ReadLine();
            } 
        }

        static class Extensions
    {
        static public  bool AllEqual(this bool firstValue, params bool[] bools)
        {
            return bools.All(thisBool => thisBool == firstValue);
        }
    }
于 2012-06-29T19:14:15.047 に答える
4

これを使ってみませんか?

areSame = (a == b && b == c);
于 2012-06-29T14:18:11.037 に答える
1

どうですか:

bool areSame = (a && b && c) || (!a && !b && !c) ? true : false;
于 2012-06-29T14:31:35.020 に答える
0

このアプローチはどうですか?これにより、できるだけ多くのboolを渡して、trueの最小数が満たされているかどうかを確認できます。

public static bool AreMinNumberOfTruesMet(int minNumOftrue, params bool[] bools)
{
    var totalTrue = bools.Count(boolean => boolean == true);

    return totalTrue >= minNumOftrue;
}
于 2013-12-04T19:05:50.043 に答える
0

または一行で:

bool allSame = !bools.Any(b => b != bools[0])
于 2020-06-29T09:42:06.413 に答える
-1
//all same
bool allSame = a == b == c == d;

//all false
bool allFalse = a == b == c == d == false;
于 2017-01-30T06:05:47.477 に答える