Share via


컴파일러 경고(수준 3) CS1718

업데이트: 2007년 11월

오류 메시지

같은 변수를 비교했습니다. 다른 요소를 비교하시겠습니까?
Comparison made to same variable; did you mean to compare something else?

다른 요소와 비교하려던 것이었다면 문을 수정하기만 하면 됩니다.

그러나 if (a == a) (true) 또는 if (a < a) (false) 같은 문을 사용하여 true 또는 false 여부를 테스트하려던 것이었을 수도 있습니다. 이 경우에는 if (true) 또는 if (false)를 사용하는 것이 더 좋습니다. 다음과 같은 두 가지 이점이 있습니다.

  • 이 방법이 더 간단하며 의도를 명확하게 표현할 수 있습니다.

  • 혼동을 줄일 수 있습니다. C# 2.0의 새로운 기능 중에는 SQL Server에서 사용되는 프로그래밍 언어인 T-SQL의 null 값과 유사한 null을 허용하는 값 형식이 있습니다. T-SQL에 익숙한 개발자의 경우 T-SQL에서 3항 논리를 사용하는 것을 고려하면 if (a == a) 같은 식에 null을 허용하는 값을 사용할 경우의 효과에 관심을 가질 수도 있습니다. true 또는 false를 사용하면 이러한 혼동을 피할 수 있습니다.

예제

다음 코드에서는 CS1718 경고가 발생하는 경우를 보여 줍니다.

// CS1718.cs
using System;
public class Tester 
{
    public static void Main() 
    { 
        int i = 0;
        if (i == i) { // CS1718.cs
        //if (true) { 
            i++;
        }
    }
}