컴파일러 경고(수준 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++;
}
}
}