2009-09-15 80 views
4

我讀here SortedDictionary不允許索引檢索不像SortedList。 那麼如何在下面的代碼片段中正確地獲取nameAddr["C"]索引檢索SortedDictionary <>

 SortedDictionary<string, string> nameAddr = new SortedDictionary<string, string>(); 
     nameAddr.Add("X", "29"); 
     nameAddr.Add("A", "30"); 
     nameAddr.Add("C", "44");   

     Console.WriteLine(nameAddr["C"]); 

回答

5

這是由關鍵索引。 SortedList允許通過「密鑰索引」進行索引,例如nameAddr.Values[1]將返回「44」。

(集合不允許名稱/值對的索引,只是每個KeysValues分開。)

例如:

var list = new SortedList<string, string> 
{ 
    { "X", "29" }, 
    { "A", "30" }, 
    { "C", "44" }, 
}; 

Console.WriteLine(list.Keys[1]); // Prints "C" 
Console.WriteLine(list.Values[1]); // Prints "44" 
5

排序列表在內部使用的陣列作爲數據結構進行存儲,然後根據需要對數組進行排序以保持項目的順序。由於它使用數組,因此可以像使用任何數組一樣使用數字索引來訪問項目。

SortedDictionary在內部使用紅黑二叉搜索樹來保持項目的順序。這個概念是完全不同的。沒有數組,也沒有類似的數字索引檢索項目。唯一的選擇是使用添加到字典中的鍵值對的關鍵部分。

就是這樣說的。你的代碼對我來說看起來很正確這是從字典中檢索項目的唯一方法(除了使用Values集合以外,但也不會爲您提供數字索引功能)。