关于c#:词典项目顺序

Dictionary item order

我用Dictionary来储存自己的物品。使用字典的原因是键是唯一的,访问速度很快。

在大多数情况下,我只使用狄更斯访问单个项目。但在一个案例中,我必须循环浏览字典——这里我需要按添加的顺序排列条目。

我只知道字典在内部使用哈希表,但我不知道它是如何组织的。

问题:字典中的项目在添加时是否按顺序排列?添加或删除项目时,订单会发生什么情况?


它们根本就没有订购。字典中元素的顺序是不确定的。

msdn:"返回项目的顺序未定义。"

您可以使用OrderedDictionary而不是通过索引访问项目。或者,如果您希望通过密钥订购它,您可以使用SortedDictionary

更新为什么字典不是按性质排序的?


如果您查看了msdn页面,就会发现(第一个问题)

The order in which the items are returned is undefined.

第二个问题的答案是它是由哈希表实现的。

我不可能在不知道你的实际需求的情况下推荐一个更好的行动方案。但一旦你开始乱用多个键和排序顺序,你将失去你的O(1)检索。


不,它们没有订购,您可以在Microsoft的库中阅读:

For purposes of enumeration, each item in the dictionary is treated as
a KeyValuePair structure representing a value and its
key. The order in which the items are returned is undefined.


字典根本没有排序,因此您不能依赖其中的值。您可以尝试使用OrderedDictionary。如果您喜欢通用的,请检查以下链接:

没有OrderedDictionary的通用实现?