1

次のコード行を使用して、小数が等しいかどうかを確認していますが、構文エラーが表示されています。

if (ProgramVariables.MSR_AR_System == ProgramVariables.MSR_AR_EB_1 == ProgramVariables.MSR_AR_EB_2 == ProgramVariables.MSR_AR_EB_3)

正しい方法は?

4

6 に答える 6

1

あなたはただすることはできませんA == B == C == D&&次のように (AND) 演算子を使用する必要があります。

if (a == b && b == c && c == d && d == e)
{
    // Do something
}

つまりif a equals b AND b equals c AND c equals d AND d equals e then

なぜこれが起こるのですか?等値演算子は同じ型の 2 つの引数を取るためです。a == b結果はブール値 (trueまたはfalse) になり、この結果を次の値と比較しますcが、同じ型ではないため、 aと a をdecimal比較することはできません。booleandecimal

于 2013-01-24T09:12:44.033 に答える
0

比較演算子はブール値、つまり True または False を返します。したがって、最初の比較はブール値を返し、10 進数と比較していることを示します。したがって、エラー。

于 2013-01-24T09:21:01.560 に答える
0

そのはず:

if (ProgramVariables.MSR_AR_System == ProgramVariables.MSR_AR_EB_1 
 && ProgramVariables.MSR_AR_EB_1 == ProgramVariables.MSR_AR_EB_2 
 && ProgramVariables.MSR_AR_EB_2 == ProgramVariables.MSR_AR_EB_3)
于 2013-01-24T09:12:05.580 に答える
0

この==演算子は二項演算子で、左から右に評価されます。つまり、最初に評価します

ProgramVariables.MSR_AR_System == ProgramVariables.MSR_AR_EB_1

これはブール値を与え、このブール値は次と比較されます

(true or false) == ProgramVariables.MSR_AR_EB_2

これもブール値を与え、この 2 番目のブール値を比較します

(true or false) == ProgramVariables.MSR_AR_EB_3

互換性のない型の値を比較すると、エラーが発生します。

複数の値を比較する正しい方法は、論理&&(and) 演算子でそれらを結合することです。たとえば、

if (ProgramVariables.MSR_AR_System == ProgramVariables.MSR_AR_EB_1 
    && ProgramVariables.MSR_AR_System == ProgramVariables.MSR_AR_EB_2 
    && ProgramVariables.MSR_AR_System == ProgramVariables.MSR_AR_EB_3)
于 2013-01-24T09:16:04.260 に答える
0

これを試して

if (ProgramVariables.MSR_AR_System.Equals(ProgramVariables.MSR_AR_EB_1).Equals(ProgramVariables.MSR_AR_EB_2.Equals(ProgramVariables.MSR_AR_EB_3)))
于 2013-01-24T09:16:52.423 に答える
0

次のようにメソッドを書くことができます:

public static bool AllEqual<T>(params T[] values)
    where T : struct
{
    if (values.Length < 2) 
        return true;

    T first = values[0];
    for (int i = 1; i < values.Length; i++)
    {
        if (!values[i].Equals(first))
            return false;
    }

    return true;
}

そして、それを使用してすべての値を比較します。

if (AllEqual(ProgramVariables.MSR_AR_System,
             ProgramVariables.MSR_AR_EB_1,
             ProgramVariables.MSR_AR_EB_2,
             ProgramVariables.MSR_AR_EB_3))
于 2013-01-24T09:34:36.433 に答える