.NET의 제네릭 인터페이스
이 문서에서는 여러 제네릭 형식 패밀리에 대해 공통 기능을 제공하는 .NET 제네릭 인터페이스에 대해 간략하게 설명합니다.
제네릭 인터페이스는 순서 및 같음 비교와 제네릭 컬렉션 형식에서 공유되는 기능을 위해 제네릭이 아닌 인터페이스에 형식이 안전한 대응 항목을 제공합니다. .NET 7에는 숫자와 유사한 형식(예: System.Numerics.INumber<TSelf>)에 대한 제네릭 인터페이스가 도입되었습니다. 이러한 인터페이스를 사용하면 수학적 기능을 제공하는 제네릭 메서드를 정의할 수 있습니다. 여기서 제네릭 형식 매개 변수는 제네릭 숫자 인터페이스를 구현하는 형식으로 제한됩니다.
참고 항목
여러 제네릭 인터페이스의 형식 매개 변수는 공변(covariant) 또는 반공변(contravariant)으로 표시되어 관련 인터페이스를 구현하는 형식을 유연하게 할당하고 사용할 수 있게 해줍니다. 자세한 내용은 공변성(Covariance) 및 반공변성(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>을 구현하지 않는 형식에 대한 정렬 순서를 지정할 수 있습니다. 제네릭 IComparer<T> 구현을 사용하여 배열 및 목록을 정렬하기 위한 Array.Sort 제네릭 정적 메서드 및 List<T>.Sort 인스턴스 메서드의 오버로드가 있습니다.
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 인터페이스를 상속합니다. 형식 매개 변수
T
에 종속되지 않는 MoveNext 및 Reset 멤버는 제네릭이 아닌 인터페이스에만 나타납니다. 즉, 제네릭이 아닌 인터페이스의 소비자는 제네릭 인터페이스도 사용할 수 있습니다.
수학적 기능
.NET 7에서는 숫자형 형식과 이에 사용 가능한 기능을 설명하는 System.Numerics 네임스페이스에 제네릭 인터페이스를 도입합니다. .NET 기본 클래스 라이브러리가 제공하는 20개의 숫자 형식(예: Int32 및 Double)이 이러한 인터페이스를 구현하도록 업데이트되었습니다. 이러한 인터페이스 중 가장 눈에 띄는 것은 대략 "실수" 숫자에 해당하는 INumber<TSelf>입니다.
이러한 인터페이스에 대한 자세한 내용은 제네릭 수학을 참조하세요.
참고 항목
.NET