【发布时间】:2010-12-19 21:37:37
【问题描述】:
我想知道 C# 中的 foreach 循环遍历 System.Collections.Generic.List<T> 对象的顺序。
我发现another question 是关于同一主题的,但我认为它对我的问题的回答并不令我满意。
有人说没有定义顺序。但正如其他人所说,它遍历数组的顺序是固定的(从 0 到 Length-1)。 8.8.4 The foreach statement
也有人说,任何有顺序的标准类也是如此(例如List<T>)。我找不到任何文档来支持它。所以据我所知,它现在可能会这样工作,但也许在下一个 .NET 版本中它会有所不同(即使它可能不太可能)。
我还查看了List(t).Enumerator 文档,但没有运气。
Another related question 表示对于 Java,文档中特别提到:
List.iterator()返回此列表中元素的迭代器 以适当的顺序。”
我正在 C# 文档中寻找类似的内容。
提前致谢。
编辑:感谢大家的所有回答(令人惊讶的是我收到这么多回复的速度有多快)。我从所有答案中了解到的是 List<T> 总是按照其索引的顺序进行迭代。但我仍然希望看到明确说明这一点的文档,类似于Java documentation on List。
【问题讨论】:
标签: c# foreach operator-precedence