.NET の汎用コレクション

.NET クラス ライブラリでは、System.Collections.Generic および System.Collections.ObjectModel の名前空間に多数のジェネリック コレクション クラスが用意されています。 各クラスについて詳しくは、「一般的に使用されるコレクション型」を参照してください。

System.Collections.Generic

ジェネリック コレクション型の多くは、非ジェネリック型に直接類似しています。 Dictionary<TKey,TValue> は、Hashtable のジェネリック バージョンです。これは列挙体のために DictionaryEntry ではなくジェネリック構造体 KeyValuePair<TKey,TValue> を使用します。

List<T>ArrayList のジェネリック バージョンです。 ジェネリックの Queue<T> および Stack<T> クラスには、非ジェネリックのバージョンに対応するものがあります。

SortedList<TKey,TValue> には、ジェネリックおよび非ジェネリックのバージョンがあります。 どちらのバージョンも、ディクショナリとリストのハイブリッドです。 SortedDictionary<TKey,TValue> ジェネリック クラスは純粋なディクショナリであり、対応する非ジェネリックのバージョンはありません。

LinkedList<T> ジェネリック クラスは、実際のリンク リストです。 これには、対応する非ジェネリックのバージョンはありません。

System.Collections.ObjectModel

Collection<T> ジェネリック クラスは、独自のジェネリック コレクション型を派生させるための基本クラスを提供します。 ReadOnlyCollection<T> クラスは、IList<T> ジェネリック インターフェイスを実装する任意の型から、読み取り専用のコレクションを生成するための簡単な方法を提供します。 KeyedCollection<TKey,TItem> ジェネリック クラスは、独自のキーを含むオブジェクトを格納するための方法を提供します。

その他のジェネリック型

Nullable<T> ジェネリック構造体により、null が割り当て可能であるかのように値型を使用できます。 これは、値型が含まれるフィールドが欠落している可能性のあるデータベース クエリで作業するときに便利です。 ジェネリック型パラメーターには、任意の値型を指定できます。

Note

C# および Visual Basic には null 許容型の構文があるので、その言語では Nullable<T> を明示的に使用する必要はありません。 「null 許容値型 (C# リファレンス)」および「null 許容値型 (Visual Basic)」を参照してください。

ArraySegment<T> ジェネリック構造体は、任意の型の 0 から始まる 1 次元の配列内で、要素の範囲を区切る方法を提供します。 ジェネリック型パラメーターは、配列の要素の型です。

EventHandler<TEventArgs> ジェネリック デリゲートにより、イベントが .NET によって使用されるイベント処理パターンに従う場合に、イベントを処理するためにデリゲート型を宣言する必要がなくなります。 たとえば、イベントのデータを保持するために、EventArgs から派生した MyEventArgs クラスを作成したとします。 その場合、イベントを次のように宣言できます。

public:
    event EventHandler<MyEventArgs^>^ MyEvent;
public event EventHandler<MyEventArgs> MyEvent;
Public Event MyEvent As EventHandler(Of MyEventArgs)

関連項目