假设我有一个Dictionary
,并按特定顺序添加每个key
和value
条目。
现在,如果我想稍后能够以相同的顺序迭代这个Dictionary
条目被添加,是这个词典上简单的foreach
循环得到的顺序?用foreach遍历字典,按什么顺序完成?
如果不是,我会很高兴听到我该怎么做,我知道这可以用List
而不是Dictionary
轻松完成,但我不想。
感谢
假设我有一个Dictionary
,并按特定顺序添加每个key
和value
条目。
现在,如果我想稍后能够以相同的顺序迭代这个Dictionary
条目被添加,是这个词典上简单的foreach
循环得到的顺序?用foreach遍历字典,按什么顺序完成?
如果不是,我会很高兴听到我该怎么做,我知道这可以用List
而不是Dictionary
轻松完成,但我不想。
感谢
正常Dictionary
不保证项目的顺序。
如果您想维护添加到其中的订单商品,则需要OrderedDictionary
。请注意,在.Net框架中没有该类的通用版本,因此要么放弃某种类型安全性或找到其他实现(即https://www.codeproject.com/Articles/18615/OrderedDictionary-T-A-generic-implementation-of-IO为suggested by Tim S)。
或者,如果O(log n)查找正常并且键应该排序 - SortedDictionary。
请注意,这个类不使用泛型,所以它不是类型安全的。如果你想让你的集合使用泛型(我推荐它),请使用类似'OrderedDictionary'的实现:http://www.codeproject.com/Articles/18615/OrderedDictionary-TA-generic-implementation-的-IO –
字典的内部排序取决于使用的散列函数。但是,如果您需要数据的排序视图,则可以使用Enumerable.OrderBy
。
听起来像是你想要的是一个Queue<T>
:http://msdn.microsoft.com/en-us/library/7977ey2c.aspx
添加您KeyValuePair<T, U>
项目它在你想要的顺序,然后foreach
荷兰国际集团在这将是先入/先出的顺序。
不,字典不维护顺序。不幸的是,我认为你需要使用一个List。 – phoog
使用'IEnumerable>'代替(例如,List <>) –
sehe
@seth Dictionary *是* IEnumerable>'。 –
phoog