C# 词典的IEnumerator是否保证一致?

C# 词典的IEnumerator是否保证一致?,c#,.net,dictionary,ienumerable,C#,.net,Dictionary,Ienumerable,因此,我发现了一段代码如下: class CustomDictionary { Dictionary<string, string> backing; ... public string Get(int index) { return backing.ElementAtOrDefault(index); //use linq extensions on IEnumerable } } 类自定义字典 { 词典支持; ... 公共字符串Get(int索引)

因此,我发现了一段代码如下:

class CustomDictionary
{
  Dictionary<string, string> backing;
  ...
  public string Get(int index)
  {
    return backing.ElementAtOrDefault(index); //use linq extensions on IEnumerable
  }
}
类自定义字典
{
词典支持;
...
公共字符串Get(int索引)
{
return backing.ElementAtOrDefault(index);//在IEnumerable上使用linq扩展
}
}
然后就这样使用了:

for(int i=0;i<mydictionary.Count;i++)
{
  var value=mydictionary.Get(i);
}

for(int i=0;i这是不能保证的。当然,这是用于分类词典,也用于数组和列表。但不用于词典


如果字典不更改,它很可能会稳定,但这不是保证。你必须问问自己-你觉得幸运吗?;)

如果你想按元素插入的顺序获取元素,那么你可能应该查看并取决于你首先想要的元素。

是的,你会得到相同的项目

正如您所指定的,您提出的方法是非常低效的


ElementAtOrDefault是IEnumerable的LINQ扩展方法,意味着对于每个项,它将一直迭代到指定项。

Dovie'andi se tovya sagain。。我特别喜欢“你觉得幸运吗?”SortedDictionary不会保证你得到的项目与你用来将它们添加到数据结构的序列相同。它将按提供的键对项目进行排序。@MiguelMatos:如果键具有明确的排名,并且项目既没有添加也没有删除,则重复枚举必须返回相同序列中的所有项目(唯一正确的一个)。@supercat这取决于您想要的序列类型。如果希望项目按键排序,或者希望项目按添加顺序排序。提出这个问题的方式并不清楚Earlz想要什么样的排序。@MiguelMatos:我的解释是他不需要任何特定的序列,但他需要所有返回不同项的
ElementAtOrDefault
调用。我建议您反编译Dictionary类,因为它完全取决于内部实现。