【发布时间】:2012-04-16 11:40:20
【问题描述】:
我有一个字典,并在上面添加了一些元素。例如,
Dictionary<string, string> d = new Dictionary<string, string>();
d.Add("Content","Level0");
d.Add("gdlh","Level1");
d.Add("shows","Level2");
d.Add("ytye","Level0");
在 C# 中,字典以自然顺序保持元素。但我现在想从最后一个到第一个迭代这些值(即,反向顺序)。我的意思是,
首先我想阅读 ytye,然后是节目、gdlh,最后是内容。
请指导我摆脱这个问题...
【问题讨论】:
-
您声明 “在 C# 中,Dictionary 使元素保持自然顺序”。这是不正确的。 The remarks section 声明 “项目返回的顺序未定义。”
-
@Daniel Hilgarth 这是我最初的想法,我这样评论,但因为我测试了一些代码并且它有效,所以将其删除。所以我做了更多的研究。最终,如果它强制字典调整大小,元素可能会在插入过程中重新排序。 SortedDictionary 是指键的顺序,但你可以给它一个比较器...... OrderedDictionary 是非泛型的,但可能是他需要的。
-
我曾经为此争论过一次——虽然标准字典中枚举条目的“顺序”是基本上是你输入它们的顺序,但这不是保证行为!假设情况总是如此是非常不明智的。