用foreach迭代字典,这样做的顺序是什么?

Jav*_*aSa 13 .net c# collections dictionary

假设我有一个Dictionary,并按特定顺序添加每个keyvalue条目.
现在,如果我希望以后能够以Dictionary相同的顺序迭代这个条目,那么这是我foreach在这个字典上使用简单循环获得的顺序吗?

如果没有,我会很高兴听到我怎么能这样做,我知道这可以很容易地完成List而不是Dictionary但我不想这样做.

谢谢

Ale*_*kov 17

正常Dictionary不保证物品的顺序.

你需要OrderedDictionary,如果你想保持在那里加入到它的订单项目.请注意,.Net框架中没有此类的通用版本,因此要么必须放弃某些类型安全性,要么找到其他实现(即https://www.codeproject.com/Articles/18615/OrderedDictionary-TA-generic -按照Tim S的建议实施IO.

或者,如果O(log n)查找正常并且键应该排序 - SortedDictionary.

  • 请注意,此类不使用泛型,因此它不是类型安全的.如果您希望您的集合使用泛型(我推荐它),请使用类似于"OrderedDictionary"的实现:http://www.codeproject.com/Articles/18615/OrderedDictionary-TA-generic-implementation-的-IO (2认同)