【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); }