DA0006: 값 형식에 대해 Equals()를 재정의하십시오.DA0006: Override Equals() for value types

규칙 IDRule Id DA0006DA0006
범주Category .NET Framework 사용.NET Framework Usage
프로파일링 방법Profiiling methods 샘플링Sampling
메시지Message 값 형식에 대해 Equals 및 같음 연산자를 재정의합니다.Override Equals and equality operator on value types.
메시지 형식Messge type 경고Warning

원인Cause

Equals 메서드 또는 공개 값 형식의 같음 연산자에 대한 호출이 프로파일링 데이터의 상당한 부분을 차지합니다.Calls to the Equals method or the equality operators of a public value type are a significant proportion of the profiling data. 더 효율적인 메서드를 구현해 보세요.Consider implementing a more efficient method.

규칙 설명Rule Description

값 형식의 경우 Equals의 상속된 구현에서 System.Reflection 라이브러리를 사용하며 형식에서 모든 필드의 내용을 비교합니다.For value types, the inherited implementation of Equals uses the System.Reflection library and compares the contents of all fields in the type. Reflection에는 많은 계산이 요구되며 모든 필드의 일치 여부를 비교하는 것이 불필요할 수 있습니다.Reflection is computationally expensive, and comparing every field for equality might be unnecessary. 사용자가 인스턴스를 비교 또는 정렬하거나 인스턴스를 해시 테이블 키로 사용할 것으로 예측되는 경우에는 값 형식에서 Equals를 구현해야 합니다.If you expect users to compare or sort instances or to use them as hash table keys, your value type should implement Equals. 프로그래밍 언어가 연산자 오버로드를 지원하는 경우 같음 및 같지 않음 연산자의 구현도 제공해야 합니다.If your programming language supports operator overloading, you should also provide an implementation of the equality and inequality operators.

Equals 및 같음 연산자를 재정의하는 방법에 대한 자세한 내용은 Equals 및 같음 연산자(==) 구현 지침을 참조하세요.For more information about how to override Equals and the equality operators, see Guidelines for Implementing Equals and the Equality Operator (==).

경고를 조사하는 방법How to Investigate a Warning

Equals 및 같음 연산자 구현의 예는 코드 분석 규칙 CA1815: 값 형식에서 Equals 또는 같음 연산자를 재정의하십시오.를 참조하세요.For an example of implementing the Equals and equality operators, see the code analysis rule CA1815: Override equals and operator equals on value types