2009-09-15 77 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集合以外,但也不会为您提供数字索引功能)。