基于doc
Dictionary.KeyCollection中键的顺序是 未指定的
好的,我很好。但是,如果我没有修改字典的密钥及其值,那该怎么办呢?
让我们说如果
Dictionary.Keys.ToList();
Thread.Sleep(5000)
Dictionary.Keys.ToList();
我可以安全地假设订单会一样吗?
答案 0 :(得分:3)
迭代Dictionary
是一个确定性过程。它基于特定于实现的方式,在哈希“桶”,联系解析和插入顺序中组织项目。
但是,迭代字典的顺序并不依赖于任何可能在迭代之间发生变化的事物。您可以在Dictionary.Enumerator
here的源代码中看到迭代是如何完成的:它的bool MoveNext()
方法逐个遍历dictionary.entries[index]
数组,在到达第一个未使用的元素时停止。因此,您可以安全地假设当您不在迭代之间修改字典时,迭代字典的顺序不会改变。