一般的に使用されるコレクション型

更新 : 2007 年 11 月

コレクション型は、ハッシュ テーブル、キュー、スタック、ディクショナリ、リストなど、一般的な種類のデータ コレクションです。

コレクションは ICollection インターフェイス、IList インターフェイス、IDictionary インターフェイス、またはそれぞれのジェネリック バージョンに基づきます。IList インターフェイスと IDictionary インターフェイスは、両方とも ICollection インターフェイスから派生するため、すべてのコレクションは直接または間接的に ICollection インターフェイスに基づくことになります。IList インターフェイスに基づくコレクション (ArrayArrayList、または List<T> など) または ICollection インターフェイスに直接基づくコレクション (QueueStack、または LinkedList<T> など) では、すべての要素に値のみが含まれます。IDictionary インターフェイスに基づくコレクション (Hashtable クラスと SortedList クラス、Dictionary<TKey, TValue> ジェネリック クラスと SortedList<TKey, TValue> ジェネリック クラスなど) では、すべての要素はキーと値の両方を含みます。KeyedCollection<TKey, TItem> クラスは、値と、値に埋め込まれたキーから成るリストであり、一意の存在です。したがって、これはリストやディクショナリのように動作します。

ジェネリック コレクションは、厳密に型指定するためには最適です。また、使用言語でジェネリックをサポートしていない場合でも、System.Collections 名前空間に含まれている CollectionBaseReadOnlyCollectionBaseDictionaryBase などの基本コレクションを使用できます。これらのコレクションは抽象基本クラスであり、厳密に型指定されるコレクション クラスを作成するために拡張できます。

コレクションは、要素の格納方法、要素の並べ替え方法、検索の実行方法、および比較の実行方法によって異なります。Queue クラスと Queue<T> ジェネリック クラスは先入れ先出し一覧を提供し、Stack クラスと Stack<T> ジェネリック クラスは後入れ先出し一覧を提供します。SortedList クラスと SortedList<TKey, TValue> ジェネリック クラスは、Hashtable クラスと Dictionary<TKey, TValue> ジェネリック クラスの並べ替えられたバージョンを提供します。Hashtable または Dictionary<TKey, TValue> の要素には要素のキーでしかアクセスできませんが、SortedList または KeyedCollection<TKey, TItem> の要素には要素のキーまたはインデックスでアクセスできます。すべてのコレクションのインデックスは、ゼロ ベースではない配列を許可する Array を除いてゼロ ベースです。

LINQ to Objects 機能を使用すると、オブジェクト型が IEnumerable または IEnumerable<T> を実装している限り、LINQ クエリを使ってメモリ内オブジェクトにアクセスできます。LINQ クエリはデータ アクセス用の一般的なパターンです。通常、これは標準の foreach ループよりも簡潔で読みやすく、フィルタ処理、並べ替え、およびグループ化機能を備えています。さらに、LINQ クエリによってパフォーマンスを向上させることができます。詳細については、「LINQ to Objects」を参照してください。

このセクションの内容

参照

関連するセクション

  • コレクションとデータ構造体
    .NET Framework で利用できるスタック、キュー、リスト、配列、構造体などのさまざまなコレクション型について説明します。

  • .NET Framework におけるジェネリック
    ジェネリック コレクション、ジェネリック デリゲート、ジェネリック インターフェイスなど、.NET Framework に用意されているジェネリック機能について説明します。C#、Visual Basic、および Visual C++ の機能についてのドキュメント、およびリフレクションなどのサポート テクノロジへのリンクを示します。