Share via


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

更新 : 2007 年 11 月

ここでは、NET Framework のジェネリック コレクション クラスと、その他のジェネリック型の概要について説明します。

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

.NET Framework クラス ライブラリの 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 を割り当てることができる場合と同様に値型を使用できます。これは、値型を格納するフィールドが失われる可能性がある場合に、データベース クエリを使用する際に役立ちます。ジェネリック型パラメータには、任意の値型を指定できます。

メモ :

C# には null 許容型の構文があるため、Nullable<T> を明示的に使用する必要はありません。

ArraySegment<T> ジェネリック構造体を使用すると、任意の型のインデックス番号が 0 から始まる 1 次元配列に含まれる要素の範囲を区切ることができます。このジェネリック型パラメータは、配列の要素の型です。

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

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

参照

概念

.NET Framework のジェネリックの概要

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

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

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

参照

System.Collections.Generic

System.Collections.ObjectModel

その他の技術情報

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