2013-01-24 7 views
1

다음 코드 줄을 사용하여 십진수가 같거나 같지 만 구문 오류가 있는지 확인하고 있습니다.일부 십진수 값이 같은지 확인하십시오.

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

올바른 방법은 무엇입니까?

+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; } 

을 그리고 모든 값을 비교하는 데 사용 귀하의 의도가 올바르게). '((Sys == 1) == (2 == 3))'을 실행했다면 컴파일 될 것이지만 네 개의 변수가 모두 동등하다는 것을 보장하지는 않을 것입니다. –

답변

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) 
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을 의미합니다.

왜 이런 일이 발생합니까? equality operator은 같은 유형의 인수 두 개를 사용하기 때문입니다. a == b이 부울 (true 또는 false)이되고이 결과를 c의 다음 값인 여전히 decimal이고 비교 유형이 같지 않으므로 booleandecimal과 비교할 수 없습니다.

0

== 연산자는 이진 연산자이며 왼쪽에서 오른쪽으로 계산됩니다. 이는 평가 수단 제

부울 값을 제공하고이 부울 값 다시 부울 값을 제공하고이 제 부울 값

비교된다

(true or false) == ProgramVariables.MSR_AR_EB_2 

비교된다

ProgramVariables.MSR_AR_System == ProgramVariables.MSR_AR_EB_1 

(true or false) == ProgramVariables.MSR_AR_EB_3 

호환되지 않는 유형의 값을 비교하기 때문에 오류가 발생합니다.

여러 값을 비교하는 올바른 방법이

if (ProgramVariables.MSR_AR_System.Equals(ProgramVariables.MSR_AR_EB_1).Equals(ProgramVariables.MSR_AR_EB_2.Equals(ProgramVariables.MSR_AR_EB_3))) 
0

를 들어, 논리적 && (과) 운영자에 의해, 즉 진정한 그들을 결합하는 것입니다 또는 거짓. 따라서 첫 번째 비교는 부울 값을 반환하고 10 진수와 비교합니다. 따라서 오류.

0

비교 연산자의 반환 부울 ​​값을 시도 예를

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) 
0

당신은이 같은 방법을 쓸 수 있습니다 : 내가 이해한다면 (당신의 의도를 표현하는 몇 가지 브라케팅으로

if (AllEqual(ProgramVariables.MSR_AR_System, 
      ProgramVariables.MSR_AR_EB_1, 
      ProgramVariables.MSR_AR_EB_2, 
      ProgramVariables.MSR_AR_EB_3)) 
관련 문제