gpt4 book ai didi

c# - 每个循环的 C# 以什么顺序迭代 List

转载 作者:IT王子 更新时间:2023-10-29 03:40:49 28 4
gpt4 key购买 nike

我想知道 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()returns an iterator over the elements in this list in proper sequence."

我正在 C# 文档中寻找类似的内容。

提前致谢。

编辑:感谢你们所有的回答(令人惊讶的是我得到这么多回复的速度)。我从所有答案中了解到的是 List<T>总是按其索引顺序迭代。但我仍然希望看到一份清晰的文档说明这一点,类似于 Java documentation on List .

最佳答案

基本上取决于 IEnumerator实现 - 但对于 List<T>它将始终按照列表的自然顺序排列,即与索引器的顺序相同:list[0] , list[1] , list[2]

我不相信它有明确的文档记录——至少,我还没有找到这样的文档——但我认为你可以将其视为有保证的。对该顺序的任何更改都会毫无意义地破坏各种代码。事实上,我会很惊讶地看到 IList<T> 的任何实现。这违反了这一点。诚然,很高兴看到它被专门记录下来......

关于c# - 每个循环的 C# 以什么顺序迭代 List<T>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1790245/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com