当我在C#.net中使用foreach
语句时,.net如何确定处理集合中元素的顺序是什么?
答案 0 :(得分:10)
当您使用foreach
时,实现IEnumerable
或IEnumerable<T>
的对象将被“迭代”。订单由对象的IEnumerable
实现确定。
任何类都可以自定义发生这种情况的顺序。例如,使用List<T>
,它在列表的顺序中(按索引)。但是,某些类如Dictionary<T,U>
根本不保证订单 - 只是每个项目都会被枚举一次,因为在这种情况下提供订购保证会严重影响性能。
答案 1 :(得分:1)
它使用IEnumerable和IEnumerator接口。他们一个接一个地提供价值,所以.Net不必关心订购。它只是在交付时按顺序处理值。