C#のコレクションまとめ
C#でリストや配列などコレクションの処理をするのは何かと多いです。
C#のバージョンが、1.0から2.0, 3.0, 4.0と上がっていくたびに、
コレクションのライブラリもより便利で使いやすいクラスが増えてきました。
クラスが非常に多く、どこに何があるのか分かりにくかったのでまとめてました。
System.Collections名前空間
System.Collections名前空間以下のクラスは、C#1.0に作られたコレクションライブラリです。
基本的にこれらのクラスは、古く扱いづらいので使わないほうが良いと思います。
次に説明するSystem.Collections.Generic名前空間を使用してください。
ただし、昔のライブラリによっては、このSystem.Colelctionを使用している場合があるので、覚えておいて損はないと思います。
System.Collections.Generic名前空間
System.Collections.Generic名前空間以下のクラスは、C#2.0に作られたコレクションライブラリです。
C#でコレクションを扱う場合、基本この名前空間をusingします。
System.Collections.Generic以下のクラス
IEnumerable<T>インターフェイス
ここからはSystem.Collections.Generic名前空間以下のクラスについて説明します。
C#のコレクション、リストや配列などはすべて、IEnumerable
なので、リストであろうが配列であろうが、IEnumerable
IEnumerable<int> xs = new List<int>{1,2,3,4}; IEnumerable<int> ys = new int[]{1,2,3,4}; IEnumerable<int> zs = new HashSet<int>{1,2,3,4};
IList<T>インターフェイス
リストです。可変長な配列として扱うことができ、追加や削除が可能です。
IList<int> xs = new List<int>{0,1,2,3}; xs.Add(4); xs.Add(5);
上の例ではxsの中身は{0,1,2,3,4,5}になります。
ISet<T>インターフェイス
C#4.0から追加されたインターフェイスです。
要素がひとつだけのコレクションです。同じ要素は二個以上入りません。
ISet<int> xs = new HashSet<int>{1,2,3,4}; xs.Add(5);//追加 xs.Add(4);//同じ要素がある場合追加されない
上の例では、xsの中身は{1,2,3,4,5}になります。
IDictionary<TKey,TValue>インターフェイス
TKeyがキー、TValueが値な辞書コレクションです。
IDictionary<String,String> map = new Dictionary<String,String>(); map["google"] = @"http://www.google.com/"; map["yahoo"] = @"http://www.yahoo.co.jp/"; map["hatena"] = @"http://www.hatena.ne.jp/" map["mindfree"] = @"http://mindfree.jp/"; String str = map["hatena"]; Console.WriteLine(str);// "http://www.hatena.ne.jp/"
ジェネリックス
IList
IList
例えばIList
Tなど、型パラメータをもつのもをジェネリックスと呼びます。
System.Linq.Enumerableクラス
C#3.5からSystem.Linq.EnumerableクラスというIEnumerable
使用する場合はSystem.Linq名前空間をusingします。
Enumerableクラスを使用すればSelect()やWhere()などを利用することが出来ます。
他にも、図に載せきれていない便利なクラスがたくさんあるので、System.Collections.Generic名前空間を参考にしてください。