.net如何确定“foreach”循环的顺序?

时间:2011-04-26 18:55:19

标签: .net collections foreach

当我在C#.net中使用foreach语句时,.net如何确定处理集合中元素的顺序是什么?

2 个答案:

答案 0 :(得分:10)

当您使用foreach时,实现IEnumerableIEnumerable<T>的对象将被“迭代”。订单由对象的IEnumerable实现确定。

任何类都可以自定义发生这种情况的顺序。例如,使用List<T>,它在列表的顺序中(按索引)。但是,某些类如Dictionary<T,U>根本不保证订单 - 只是每个项目都会被枚举一次,因为在这种情况下提供订购保证会严重影响性能。

答案 1 :(得分:1)

它使用IEnumerable和IEnumerator接口。他们一个接一个地提供价值,所以.Net不必关心订购。它只是在交付时按顺序处理值。