【发布时间】:2016-06-09 12:02:17
【问题描述】:
我知道List 枚举器保证枚举顺序并尊重最后的排序操作,我知道Dictionary 和HashSet 不能,即你可以不确定 p>
Dictionary<string, string> dictionary = ...;
foreach(var pair in dictionary)
{
}
将按照它们附加的顺序处理对。
Stack 和 Queue 呢?他们的枚举器是否保证任何顺序?
【问题讨论】:
-
你在比较不同的东西。堆栈、队列、数组、列表具有强大的排序保证,而字典则没有。您遇到过具体问题吗?
-
@PanagiotisKanavos 不,我没有。但这无关紧要。说实话,你这几年的年轻人,我使用了
Dictionary枚举,并且代码被构建为依赖于枚举顺序,这很糟糕。我从未偶然发现Dictionary更改枚举顺序的情况。这不会使错误更加糟糕。 -
@MatthewWatson 感谢您的提示。它很近,但还不够近。我需要一份有据可查的订单证据以确保枚举。仅仅观察是不好的。
-
RE: 字典:字典可能改变顺序的唯一时间是
Dictionary被调整大小。枚举未定义的原因是因为它处于内部散列顺序(GetHashCode() 进一步散列到有限数量的桶中)。