이 문서에서는 제네릭 형식의 제품군에서 공통 기능을 제공하는 .NET의 제네릭 인터페이스에 대해 개요를 제공합니다.
제네릭 인터페이스는 데이터 형식의 안전성을 보장하면서, 순서 비교 및 같음 비교를 위한 비제네릭 인터페이스의 안전한 대안이 되며, 제네릭 컬렉션 형식에서 공유하는 기능을 제공합니다. .NET 7에는 숫자와 유사한 형식에 대한 제네릭 인터페이스가 도입되었습니다. 예를 들면 System.Numerics.INumber<TSelf>다음과 같습니다. 이러한 인터페이스를 사용하면 제네릭 형식 매개 변수가 제네릭 숫자 인터페이스를 구현하는 형식으로 제한되는 수학 기능을 제공하는 제네릭 메서드를 정의할 수 있습니다.
비고
여러 제네릭 인터페이스의 형식 매개 변수는 공변성 또는 반공변으로 표시되어 이러한 인터페이스를 구현하는 형식을 할당하고 사용하는 데 더 큰 유연성을 제공합니다. 자세한 내용은 공변성 및 반공변성(Contravariance)을 참조하세요.
같음 및 순서 비교
네임스페이스 System에는 제네릭 인터페이스인 System.IComparable<T>와 System.IEquatable<T>가 있으며, 이들은 비제네릭 인터페이스와 같이 각각 정렬 비교와 같음 비교를 위한 메서드를 정의합니다. 형식은 이러한 인터페이스를 구현하여 이러한 비교를 수행하는 기능을 제공합니다.
네임스페이스 System.Collections.Generic 안에서 IComparer<T> 및 IEqualityComparer<T> 제네릭 인터페이스는 System.IComparable<T> 또는 System.IEquatable<T> 인터페이스를 구현하지 않는 형식에 대한 순서 또는 동등성 비교를 정의할 수 있는 방법을 제공합니다. 관계를 재정의할 수 있는 유형에 대해 방법을 제공하기도 합니다.
이러한 인터페이스는 많은 제네릭 컬렉션 클래스의 메서드 및 생성자에서 사용됩니다. 예를 들어 제네릭 개체를 클래스의 IComparer<T> 생성자에 전달하여 제네릭 SortedDictionary<TKey,TValue>System.IComparable<T>을 구현하지 않는 형식의 정렬 순서를 지정할 수 있습니다. 제네릭 정적 메서드의 Array.Sort 오버로드와 List<T>.Sort 제네릭 IComparer<T> 구현을 사용하여 배열 및 목록을 정렬하는 인스턴스 메서드가 있습니다.
Comparer<T>와 EqualityComparer<T> 제네릭 클래스는 IComparer<T> 및 IEqualityComparer<T> 제네릭 인터페이스의 구현을 위한 기본 클래스를 제공하며, 각각의 Comparer<T>.Default 및 EqualityComparer<T>.Default 속성을 통해 기본 순서 및 같음 비교를 제공합니다.
컬렉션 기능
ICollection<T> 제네릭 인터페이스는 제네릭 컬렉션 형식에 대한 기본 인터페이스입니다. 요소를 추가, 제거, 복사 및 열거하기 위한 기본 기능을 제공합니다. ICollection<T> 는 제네릭 및 비제네릭 IEnumerable<T>IEnumerable에서 상속됩니다.
IList<T> 제네릭 인터페이스는 인덱스 검색을 위한 메서드로 ICollection<T> 제네릭 인터페이스를 확장합니다.
제네릭 인터페이스 IDictionary<TKey,TValue>는 ICollection<T> 제네릭 인터페이스에 키 검색 메서드를 추가하여 확장합니다. .NET 기본 클래스 라이브러리의 제네릭 사전 형식도 비제네릭 IDictionary 인터페이스를 구현합니다.
제네릭 인터페이스는 IEnumerable<T> 제네릭 열거자 구조를 제공합니다. 제네릭 열거자가 구현하는 제네릭 인터페이스는 IEnumerator<T> 제네릭 IEnumerator 이 아닌 인터페이스 MoveNext 를 상속합니다. 형식 매개 변수Reset에 의존하지 않는 멤버 및
T
멤버는 비제네릭 인터페이스에만 나타납니다. 즉, 제네릭이 아닌 인터페이스의 소비자도 제네릭 인터페이스를 사용할 수 있습니다.
수학 기능
.NET 7에는 숫자와 유사한 형식 및 사용할 수 있는 System.Numerics 기능을 설명하는 제네릭 인터페이스가 네임스페이스에 도입되었습니다. .NET 기본 클래스 라이브러리가 제공하는 20개의 숫자 형식은 예를 들어 Int32 및 Double를 포함하여 이러한 인터페이스를 구현하도록 업데이트되었습니다. 이 인터페이스 중에서 가장 두드러지는 것은 INumber<TSelf>이며, 이는 "실수" 수와 대략적으로 해당합니다.
이러한 인터페이스에 대한 자세한 내용은 제네릭 수학을 참조하세요.
참고하십시오
.NET