根暗シアン

備忘録という名の予防線

【C#】コレクション

C#にはジェネリックコレクションと非ジェネリックコレクションがある。
違いは型定義ができるかできないか。

ジェネリック ジェネリック
System.Collections.Generic.List System.Collections.ArrayList
System.Collections.Generic.Dictionary System.Collections.Hashtable

反復処理の書き方

List系

for文で書くと・

var list = new List<string>();
list.Add("hoge");
list.Add("fuga");

for(int i = 0; i < list.Count; i++){
    Console.WriteLine(list[i]);
}


foreachで書くと・

var arrayList = new ArrayList();

…

foreach(Object obj in arrayList){
    Console.WriteLine((string)obj);
}

Dictionary系

ジェネリック型の場合はKeyValuePairを使う。

var dict = new Dictionary<string, string>();

…

foreach(KeyValuePair<string, string> kv in dict){
    Console.WriteLine("Key={0}:Value={1}", kv.Key, kv.Value);
}

ジェネリック型の場合はDictionaryEntryクラスがキーと値のペアをobject型格納するよう。

var dict = new Hashtable();

…

foreach(DictionaryEntry entry in dict){
    Console.WriteLine("Key={0}:Value={1}", entry.Key, entry.Value);
}