Dictionary<string,int> things = new Dictionary<string,int>();
things.Add(........);
things.Add(........);
第一種方式:可以使用Keys和values屬性迭代集合中的鍵和值:
foreach(string key in things.Keys)
{
// ......
}
或
foreach(int value in things.Values)
{
//....
}
第二種方式:還可以迭代集合中的各個項,把每個項作為一個 KeyValuePair<K,V>實例來獲取。
foreach(KeyValuePair<string,int> thing in things)
{
Console.WriteLine("{0} = {1}",thing.Key,thing.Value);
}
另外關於Dictionary<K,V>,的key是不能重復的,如果添加相同的key就會拋出 ArgumentException異常。
但可能有這樣的一個應用:key作用一個商品名,或者姓名,是不區分大小寫的(應該當成同一個商品或者人物),但我們作為Key
加進去是不是拋異常的,但這卻違反了我們的業務邏輯概念(我們的名字或商品名等是不區別大小寫,即大小寫不同的名字應該當成相同的key)
解決方法:在new dictionary 時,可以把 IComparer<k> 接口傳遞給構造函數。我們可以在IComparer<K>接口中,我們比較每個名字(比如轉化為小寫再比較)。
這樣就可以了。