c# - 字典的 IEnumerator 是否保证一致?

标签 c# .net dictionary ienumerable

所以,我找到了一段这样的代码:

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/

相关文章:

c# - 我可以将控件的内联样式移动到不同的文件吗?

c# - 使用 Entity Framework 批量插入时内存意外增长

c# - Entity Framework - 存储过程的执行时间极长

c# - 我可以使用 Sql Server Express 复制和使用 mdf 文件吗?

.net - 基于多个属性启用/禁用菜单项的最佳方法

c# - 在 .NET 中从 NetworkStream 读取的正确方法是什么

Python 如果 kwargs 中的键和键为真

c# - 保护共享主机上的连接字符串

c++ - 共享内存 STL 映射

Python-计算单词列表中的每个字母