C# のコレクションの種類
目次
C# のコレクションの分類
C# のコレクションには大きく分けて次の3種類があります。
- ジェネリック (System.Collections.Generic) クラス
- コンカレント (System.Collections.Concurrent) クラス
- システム・コレクション (System.Collections) クラス
C# のジェネリック (System.Collections.Generic) クラス
ジェネリックコレクションクラス (System.Collections.Generic クラス) は、同じ型のコレクションを作成する場合に使います。
クラス | 説明 |
---|---|
Dictionary<TKey, TValue> | キー・値ペアのコレクション |
List<T> | 要素にインデックスアクセス可能なコレクション |
Queue<T> | FIFO のコレクション |
Stack<T> | LIFO のコレクション |
C# のコンカレント・コレクション (System.Collections.Concurrent) クラス
System.Collections.Concurrent 名前空間以下にあるコレクションクラスは、スレッドセーフに利用できます。 マルチスレッドプログラムではジェネリッククラスの代わりに、System.Collections.Concurrent 名前空間にあるクラスを使用します。
クラス名は、通常の Dictionary クラスに対応して、今カレントクラスの ConcurrentDictionary クラスがあるといったように、 Concurrent という名前が付いています。
C# のシステムコレクション (System.Collections) クラス
システムコレクションクラスは System.Collections 名前空間以下にあるクラスで、Object のコレクションを保持します。
クラス | 説明 |
---|---|
ArrayList | 可変サイズの配列 |
Hashtable | ハッシュテーブル |
Queue | オブジェクトの FIFO のコレクション |
Stack | オブジェクトの LIFO のコレクション |
マイクロソフトの資料では、同一型のオブジェクトのコレクションにはジェネリック・コレクションを利用すべきであり、 新しいプロジェクトで System.Collections 名前空間のコレクションクラスを使うことは推奨されていません。