次の方法で共有


ジェネリック コレクションを使用する状況

更新 : 2007 年 11 月

通常は、ジェネリック コレクションを使用することをお勧めします。それは、タイプ セーフの利点をすぐに得られるからです。つまり、基本コレクション型から派生させて、型に固有のメンバを実装する必要がありません。また、コレクションの要素が値型である場合、ジェネリック コレクション型は、一般に、対応する非ジェネリック コレクション型 (および非ジェネリック基本コレクション型から派生した型) よりもパフォーマンスが優れています。これは、ジェネリックでは要素をボックス化する必要がないためです。

既存のコレクション型に対応するジェネリック型を次に示します。

その他の型

対応する非ジェネリック型がないジェネリック コレクション型もいくつかあります。

  • LinkedList<T> は、挿入と削除の 0(1) 操作を提供する汎用のリンク リストです。

  • SortedDictionary<TKey, TValue> は、O (log n) の挿入および取得操作を使用して並べ替えられたディクショナリで、SortedList<TKey, TValue> の代わりに使用すると便利です。

  • KeyedCollection<TKey, TItem> はリストとディクショナリを混合したクラスであり、独自のキーを含むオブジェクトを格納する手段を提供します。

LINQ to Objects

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

その他の機能

いくつかのジェネリック型には、非ジェネリック コレクション型には存在しない機能があります。たとえば、非ジェネリックの ArrayList クラスに対応する List<T> クラスには、汎用デリゲートを受け入れるメソッドが多数あります。リストを検索するためのメソッドを指定できるようにする Predicate<T> デリゲート、リストの各要素に対して作用するメソッドを表す Action<T> デリゲート、型間の変換を定義できるようにする Converter<TInput, TOutput> デリゲートなどです。

List<T> クラスは、独自の IComparer<T> ジェネリック インターフェイスの実装を指定してリストの並べ替えと検索を実行できるようにします。SortedDictionary<TKey, TValue> クラスと SortedList<TKey, TValue> クラスにもこの機能があります。これらのクラスでは、さらに、コレクションの作成時に比較演算子を指定できます。同様に、Dictionary<TKey, TValue> クラスと KeyedCollection<TKey, TItem> クラスでは、独自の等値比較演算子を指定できます。

参照

概念

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

その他の技術情報

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