C#のコレクションまとめ
from http://d.hatena.ne.jp/mftech/20101222/1292983044
C#のバージョンが、1.0から2.0, 3.0, 4.0と上がっていくたびに、
コレクションのライブラリもより便利で使いやすいクラスが増えてきました。
クラスが非常に多く、どこに何があるのか分かりにくかったのでまとめてました。
コレクション継承図
System.Collections名前空間
基本的にこれらのクラスは、古く扱いづらいので使わないほうが良いと思います。
次に説明するSystem.Collections.Generic名前空間を使用してください。
ただし、昔のライブラリによっては、このSystem.Colelctionを使用している場合があるので、覚えておいて損はないと思います。
System.Collections.Generic名前空間
System.Collections.Generic以下のクラス
IEnumerable<T>インターフェイス
ここからはSystem.Collections.Generic名前空間以下のクラスについて説明します。
なので、リストであろうが配列であろうが、IEnumerable<T>型として使用することが出来ます。
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>インターフェイス
要素がひとつだけのコレクションです。同じ要素は二個以上入りません。
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<T>に付いているTというものが付いていますが、これは型パラメータと言われるのもです。
IList<T>のTは要素の型を表しています。
例えばIList<int>ならば要素がのintリストですし、IList<String>では要素がStringのリストになります。
System.Linq.Enumerableクラス
Enumerableクラスを使用すればSelect()やWhere()などを利用することが出来ます。
他にも、図に載せきれていない便利なクラスがたくさんあるので、System.Collections.Generic名前空間を参考にしてください。
留言
張貼留言