所以,我找到了一段这样的代码:
class CustomDictionary
{
Dictionary<string, string> backing;
...
public string Get(int index)
{
return backing.ElementAtOrDefault(index); //use linq extensions on IEnumerable
}
}
然后像这样使用它:
for(int i=0;i<mydictionary.Count;i++)
{
var value=mydictionary.Get(i);
}
除了性能问题和这样做的丑陋之外,这段代码真的正确吗?也就是说,假设在迭代期间没有用字典修改任何内容,Dictionary 上的 IEnumerable 是否保证总是以相同的顺序返回内容?
最佳答案
这不能保证。当然,它适用于 SortedDictionary<>,也适用于数组和列表。但不是字典。
很有可能,如果字典没有改变,它就会稳定——但不能保证。你必须问问自己——你觉得幸运吗? ;)
关于c# - 字典的 IEnumerator 是否保证一致?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14526147/