コレクション型は、ハッシュ テーブル、キュー、スタック、バッグ、ディクショナリ、リストなど、さまざまな方法でデータを収集します。
すべてのコレクションは、直接または間接的に、 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を除いて、0 から始まるインデックスを使用します。これにより、0 から始まらない配列を使用できます。
キーまたは要素のインデックスを使用して、 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)」を参照してください。
関連トピック
タイトル | 説明 |
---|---|
コレクションとデータ構造 | スタック、キュー、リスト、配列、ディクショナリなど、.NET で使用できるさまざまなコレクションの種類について説明します。 |
ハッシュテーブルコレクションとディクショナリコレクション型 | ジェネリックおよび非ジェネリック ハッシュ ベースのディクショナリ型の機能について説明します。 |
Sorted コレクション型 | リストとセットの並べ替え機能を提供するクラスについて説明します。 |
ジェネリック | .NET によって提供されるジェネリック コレクション、デリゲート、インターフェイスなど、ジェネリック機能について説明します。 C#、Visual Basic、Visual C++ の機能ドキュメント、およびリフレクションなどのサポート テクノロジへのリンクを提供します。 |
リファレンス
System.Collections.ICollection
System.Collections.Generic.ICollection<T>
System.Collections.Generic.IList<T>
.NET