다음을 통해 공유


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

속성
규칙 ID CA2013
타이틀 값 형식과 함께 ReferenceEquals를 사용하지 마세요.
범주 신뢰성
수정 사항이 주요 변경인지 여부 주요 변경 아님
.NET 8에서 기본적으로 사용 경고로

원인

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

규칙 설명

ReferenceEquals를 사용하여 값을 비교할 때 objA 및 objB가 값 형식이면 ReferenceEquals 메서드로 전달되기 전에 boxing됩니다. 즉, 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

경고를 표시하지 않는 경우

이 규칙의 경고는 표시해야 합니다. 와 같은 ==보다 적절한 같음 연산자를 사용하는 것이 좋습니다.

참고 항목