次の方法で共有


ジェネリック インターフェイス

このトピックでは、さまざまなジェネリック型のファミリ間で共通の機能を提供するジェネリック インターフェイスの概要について説明します。

ジェネリック インターフェイス

ジェネリック インターフェイスは、順序付け比較と同等比較、およびジェネリック コレクション型で共有される機能のための、非ジェネリック インターフェイスに対応するタイプ セーフなインターフェイスです。

メモメモ

.NET Framework Version 4 以降では、複数のジェネリック インターフェイスの型パラメーターが共変または反変としてマークされ、これらのインターフェイスを実装する型の代入と使用の柔軟性が向上しています。「ジェネリックの共変性と反変性」を参照してください。

同等比較と順序付け比較

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 Framework 基本クラス ライブラリのジェネリック ディクショナリ型は、非ジェネリック IDictionary インターフェイスも実装しています。

IEnumerable<T> ジェネリック インターフェイスは、ジェネリック列挙子構造体を提供します。 ジェネリック列挙子によって実装された IEnumerator<T> ジェネリック インターフェイスは、非ジェネリック IEnumerator インターフェイスを継承します。型パラメーター T に依存しないメンバー MoveNext および Reset は、非ジェネリック インターフェイスにだけ出現します。 つまり、非ジェネリック インターフェイスのコンシューマーは、ジェネリック インターフェイスも使用できます。

参照

参照

System.Collections.Generic

System.Collections.ObjectModel

概念

.NET Framework のジェネリック コレクション

配列とリストの操作に使用する汎用デリゲート

ジェネリックの利点と制限事項

その他の技術情報

.NET Framework におけるジェネリック

ジェネリックの共変性と反変性