CA2013: 값 형식에 ReferenceEquals를 사용하지 마세요.
속성 | 값 |
---|---|
규칙 ID | CA2013 |
제목 | 값 형식과 함께 ReferenceEquals를 사용하지 마세요. |
범주 | 신뢰성 |
수정 사항이 주요 변경인지 여부 | 주요 변경 아님 |
.NET 9에서 기본적으로 사용 | 경고로 |
원인
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
경고를 표시하지 않는 경우
이 규칙의 경고는 표시해야 합니다. 와 같은 ==
보다 적절한 같음 연산자를 사용하는 것이 좋습니다.
관련 규칙
참고 항목
GitHub에서 Microsoft와 공동 작업
이 콘텐츠의 원본은 GitHub에서 찾을 수 있으며, 여기서 문제와 끌어오기 요청을 만들고 검토할 수도 있습니다. 자세한 내용은 참여자 가이드를 참조하세요.
.NET