一般的に使用されるコレクション型
コレクション型は、ハッシュ テーブル、キュー、スタック、バッグ、ディクショナリ、リストなど、データを収集するさまざまな方法を表します。
すべてのコレクションは、ICollection または ICollection<T> インターフェイスに、直接的または間接的に基づいています。 IList と IDictionary およびそれに対応するジェネリック版はすべて、これら 2 つのインターフェイスから派生します。
IList または ICollection に直接基づくコレクションでは、すべての要素に値だけが含まれます。 型には次のものがあります。
IDictionary インターフェイスに基づくコレクションでは、すべての要素にキーと値の両方が含まれます。 型には次のものがあります。
- Hashtable
- SortedList
- SortedList<TKey,TValue>
- Dictionary<TKey,TValue>
- ConcurrentDictionary<TKey,TValue>
KeyedCollection<TKey,TItem> クラスは、値内にキーが埋め込まれた値のリストなのでユニークです。 その結果、リストとディクショナリの両方のように動作します。
効率的なマルチスレッド コレクション アクセスが必要な場合は、System.Collections.Concurrent 名前空間のジェネリック コレクションを使用します。
クラス Queue と Queue<T> クラスにより、先入れ先出しリストが提供されます。 クラス Stack と Stack<T> クラスにより、後入れ先出しリストが提供されます。
厳密な型指定
ジェネリック コレクションは、厳密な型指定に対する最適なソリューションです。 たとえば、Int32 以外の型の要素を List<Int32>
コレクションに追加すると、コンパイル時エラーが発生します。 ただし、使用する言語でジェネリックがサポートされていない場合、System.Collections 名前空間には抽象基底クラスが含まれ、厳密に型指定されたコレクション クラスを作成するために拡張できます。 次のような基底クラスがこれに含まれます。
コレクションの違い
コレクションは、要素の格納、並べ替え、比較の方法、および検索の実行方法によって異なります。
SortedList クラスと SortedList<TKey,TValue> ジェネリック クラスは、Hashtable クラスと Dictionary<TKey,TValue> ジェネリック クラスの並べ替えバージョンを提供します。
すべてのコレクションではゼロから始まるインデックスが使用されますが、Array は例外で、ゼロから始まらない配列を使用できます。
キーまたは要素のインデックスを使用して、SortedList または KeyedCollection<TKey,TItem> の要素にアクセスできます。 Hashtable または Dictionary<TKey,TValue> の要素には、要素のキーによってのみアクセスできます。
コレクション型で LINQ を使用する
LINQ to Objects の機能により、IEnumerable または IEnumerable<T> を実装する任意の型のメモリ内オブジェクトにアクセスするための一般的なパターンが提供されます。 LINQ クエリには、foreach
ループのような標準のコンストラクトより優れた点がいくつかあります。
- 簡潔で、容易に理解できます。
- データのフィルター処理、順序付け、グループ化を行うことができます。
- パフォーマンスを向上させることができます。
詳細については、「LINQ to Objects (C#)」、「LINQ to Objects (Visual Basic)」、および「Parallel LINQ (PLINQ)」を参照してください。
関連トピック
Title | 説明 |
---|---|
コレクションとデータ構造体 | .NET で利用できる、スタック、キュー、リスト、配列、ディクショナリなどのさまざまなコレクション型について説明します。 |
Hashtable コレクション型と Dictionary コレクション型 | ジェネリックと非ジェネリックのハッシュ ベースのディクショナリ型の機能について説明します。 |
Sorted コレクション型 | リストとセットの並べ替え機能を提供するクラスについて説明します。 |
ジェネリック | .NET に用意されている、ジェネリック コレクション、汎用デリゲート、ジェネリック インターフェイスなどのジェネリック機能について説明します。 C#、Visual Basic、および Visual C++ の機能についてのドキュメント、およびリフレクションなどのサポート テクノロジへのリンクを示します。 |
関連項目
System.Collections.ICollection
System.Collections.Generic.ICollection<T>
System.Collections.Generic.IList<T>
.NET