다음을 통해 공유


IEquatable<T> 인터페이스

정의

값 형식 또는 클래스가 인스턴스의 같음을 결정하는 형식별 메서드를 만들기 위해 구현하는 일반화된 메서드를 정의합니다.

generic <typename T>
public interface class IEquatable
public interface IEquatable<T>
type IEquatable<'T> = interface
Public Interface IEquatable(Of T)

형식 매개 변수

T

비교할 개체의 형식입니다.

파생

예제

IEquatable<T>.Equals 메서드에 대한 예제를 참조하세요.

설명

이 인터페이스는 값을 동일시할 수 있는 형식(예: 숫자 및 문자열 클래스)에 의해 구현됩니다. 값 형식 또는 클래스는 Equals 메서드를 구현하여 인스턴스의 같음을 결정하는 데 적합한 형식별 메서드를 만듭니다.

메모

IComparable<T> 인터페이스는 구현 형식의 인스턴스 정렬 순서를 결정하는 CompareTo 메서드를 정의합니다. IEquatable<T> 인터페이스는 구현 형식의 인스턴스 같음을 결정하는 Equals 메서드를 정의합니다.

IEquatable<T> 인터페이스는 Contains, IndexOf, LastIndexOfRemove같은 메서드에서 같음을 테스트할 때 Dictionary<TKey,TValue>, List<T>LinkedList<T> 같은 제네릭 컬렉션 개체에서 사용됩니다. 제네릭 컬렉션에 저장될 수 있는 모든 개체에 대해 구현해야 합니다.

구현자 참고

IEquatable<T> 인터페이스의 형식 매개 변수를 이 인터페이스를 구현하는 형식으로 바꿉니다.

IEquatable<T>구현하는 경우 해당 동작이 Equals(T) 메서드의 동작과 일치할 수 있도록 Equals(Object)GetHashCode() 기본 클래스 구현도 재정의해야 합니다. Equals(Object)재정의하는 경우 재정의된 구현은 클래스의 정적 Equals(System.Object, System.Object) 메서드 호출에서도 호출됩니다. 또한 op_Equalityop_Inequality 연산자를 오버로드해야 합니다. 이렇게 하면 같음 테스트에 대한 모든 테스트가 일관된 결과를 반환합니다.

Equals(Object)재정의하는 방법에 대한 자세한 내용은 Equals(Object)참조하세요.

값 형식의 경우 성능 향상을 위해 항상 IEquatable<T> 구현하고 Equals(Object) 재정의해야 합니다. Equals(Object) 상자는 값 형식을 지정하고 리플렉션을 사용하여 두 값을 같음으로 비교합니다. Equals(T) 구현과 Equals(Object) 재정의 모두 일관된 결과를 반환해야 합니다.

IEquatable<T>구현하는 경우 형식의 인스턴스를 정렬하거나 정렬할 수 있는 경우 IComparable<T> 구현해야 합니다. 형식이 IComparable<T>구현하는 경우 거의 항상 IEquatable<T>구현합니다.

형식이 순서 관계를 지원하지만 같음이 순서 관계와 구별될 수 있는 몇 가지 디자인이 있습니다. 사전순으로 정렬하는 Person 클래스를 고려합니다. 이름이 같은 두 사람은 동일하지만 같은 사람은 아닙니다.

메서드

Equals(T)

현재 개체가 같은 형식의 다른 개체와 같은지 여부를 나타냅니다.

적용 대상

추가 정보