ConcurrentDictionary 的列表顺序是否有保证?
-
21-12-2019 - |
题
我正在使用 ConcurrentDictionary 来存储日志行,当我需要将它们显示给我调用的用户时 ToList()
生成一个列表。但奇怪的是,一些用户在列表中首先收到最新的行,而从逻辑上讲它们应该是最后的。
这是因为 ConcurrentDictionary 不保证 IEnumerate 接口上的持久顺序,或者原因是什么?
解决方案
不 ConcurrentDictionary
(和 Dictionary<T>
就此而言)不保证列表中键的顺序。您必须使用不同的数据类型或自己执行排序。对于非并发代码,您将使用 SortedDictionary<T>
, ,但我不相信并发集合中有类似的东西。
其他提示
不。ConcurrentDictionary 的列表顺序不保证,行可以按任何顺序出现。
不隶属于 StackOverflow