다음을 통해 공유


CA2013: 값 형식에 ReferenceEquals를 사용하지 마세요.

속성
규칙 ID CA2013
제목 값 형식과 함께 ReferenceEquals를 사용하지 마세요.
범주 신뢰성
수정 사항이 호환성을 깨뜨리는지 여부 또는 무중단인지 여부 주요 변경 아님
.NET 10에서 기본적으로 사용하도록 설정 경고로서
적용 가능한 언어 C# 및 Visual Basic

원인

System.Object.ReferenceEquals 메서드를 사용하여 하나 이상의 값 형식이 같은지 테스트합니다.

규칙 설명

ReferenceEquals를 사용하여 값을 비교할 때, objA 및 objB가 값 형식인 경우, 이들은 ReferenceEquals 메서드로 전달되기 전에 박싱됩니다. 즉, objA와 objB가 값 형식의 동일한 인스턴스를 나타내는 경우에도 ReferenceEquals 메서드는 다음 예제와 같이 false를 반환합니다.

위반 문제를 해결하는 방법

위반 문제를 해결하려면 == 같은 더 적절한 값 비교 검사로 변경하십시오.


    int int1 = 1, int2 = 1;

    // Violation occurs, returns false.
    Console.WriteLine(Object.ReferenceEquals(int1, int2));  // false

    // Use appropriate equality operator or method instead
    Console.WriteLine(int1 == int2);                        // true
    Console.WriteLine(object.Equals(int1, int2));           // true

경고를 표시하지 않는 경우

이 규칙의 경고를 억제하는 것은 안전하지 않습니다. 와 같은 ==보다 적절한 같음 연산자를 사용하는 것이 좋습니다.

참고하기