Dictionary<string, int> testdic = new Dictionary<string, int>();
testdic.Add("cat", 1);
testdic.Add("dog", 2);
testdic.Add("rat", 3);
testdic.Remove("cat");
testdic.Add("bob", 4);


填充字典,然后删除第一个元素。然后添加一个新元素。然后,Bob出现在位置1而不是结尾处,因此似乎还记得删除的条目并重新使用该内存空间吗?

是否在任何地方都记录了该文档,因为我在MSDN上看不到它,并且让我感到悲痛,因为我认为它会一直增加到最后。

最佳答案

没有记录,因为它只是实现细节。

实现可以随时更改。 (并且,除非您仔细检查了源代码,否则您甚至无法确保对当前实现的假设是正确的。)

Dictionary<K,V>类型不能保证以任何特定顺序存储其元素,并且您不应该依赖于偶然发现的任何未记录的行为。字典是键到值的映射,而不是有序列表。

MSDN documentation


  出于枚举目的...返回项目的顺序是不确定的。

10-06 01:28