我想知道C#中的foreach循环遍历一个System.Collections.Generic.List<T>对象的顺序.
我发现了关于同一主题的另一个问题,但我觉得它不能满足我的问题.
有人说未定义任何订单.但正如其他人所说,它遍历数组的顺序是固定的(从0到长度-1).8.8.4 foreach声明
还有人说,对于任何带有订单的标准类(例如List<T>)也是如此.我找不到任何文件来支持这一点.所以我知道它现在可能会起作用,但也许在下一个.NET版本中它会有所不同(即使它可能不太可能).
我List(t).Enumerator没有运气也查看了文档.
另一个相关问题表明,对于Java,它在文档中特别提到:
List.iterator()以适当的顺序返回此列表中元素的迭代器."
我在C#文档中寻找类似的东西.
提前致谢.
编辑:感谢所有人的所有答案(令人惊讶的是我收到了如此多的回复).我从所有答案中理解的是,List<T>它总是按照索引的顺序迭代.但我仍然希望看到明确的文档和平,说明这一点,类似于Java文档List.
我对FlowLayoutPanels添加到表单的controls属性的顺序有一个特殊的问题.这是我试过的,
我在垂直条带中从左到右添加了7个FlowLayoutPanel到C#窗口应用程序.然后我再次从左到右标记流布局为1,2,3,... 7.现在在表单的加载处理程序中,我编写了以下代码段,
foreach (FlowLayoutPanel aDaysControl in this.Controls)
{
MessageBox.Show(aDaysControl.Tag.ToString());
}
Run Code Online (Sandbox Code Playgroud)
我希望消息以1,2,... 7的顺序出现.但我按相反的顺序得到它(7,6,...... 1).有人可以帮助我解决我做的错误吗?
保留订单背后的原因,
我正在尝试使用代表一天的每一行进行日历控制.如果一个月从星期三开始,那么我需要在第一行(星期一)和第二行(星期二)添加一个空标签.所以顺序有点重要