排序ConcurrentDictionary有意义吗?

Leg*_*gy7 2 c# concurrentdictionary

起初我的想法就像"这是一个基于散列的数据类型,然后它是未分类的".

然后,由于我即将使用它,我深入研究了这个问题,发现这个类实现了IEnumerable,并且这个帖子也证实了可以迭代这种数据.

所以,我的问题是:如果我使用foreach的是ConcurrentDictionary哪个是我读取元素的顺序?

然后,作为第二个问题,我想知道它的接口继承的排序方法是否具有任何用途.如果我ConcurrentDictionary在新订单上调用排序方法会持续存在(例如传入foreach)?

希望我已经清楚了

dca*_*tro 6

当前的实现没有对元素的顺序做出任何承诺.未来的实现可以轻松更改枚举元素的顺序.

因此,您的代码不应该依赖于该顺序.

来自Dictionary<TKey, TValue> msdn文档:

返回项的顺序未定义.

(我找不到任何有关的参考ConcurrentDictionary,但同样的原则适用.)

当您引用"其接口继承的排序方法"时,您的意思是LINQ扩展吗?喜欢OrderBy?如果是这样,这些扩展是纯粹的功能,并始终返回一个新的集合.那么,回答你的问题"新订单会持续存在吗?":不,它不会.但是你可以像这样使用它:

foreach(KeyValuePair<T1, T2> kv in dictionary.OrderBy(...))
{

}
Run Code Online (Sandbox Code Playgroud)