| 本帖最后由 曾玉锋 于 2013-3-13 12:44 编辑 
 1.首先强调掉的是foreach只能对实现了IEnumerator接口或者间接实现IEnumerator接口的类型进行遍历。
 2.foreach遍历集合的过程:
 下面是IEnumerator接口,
 public interface IEnumerator
 {
 object Current
 {
 get;
 }
 bool MoveNext();
 void Reset();
 }
 foreach遍历集合的过程如下:
 1.将集合或者数组的数据copy一份到内存,并且获得一个IEnumerator对象,获得当前在新的集合或者新数组中的第一个对象赋值给Current,
 大家可以看到Current属性是只读的,所以只能读不能修改,况且也不是对原集合或数组中操作。
 
 2.通过调用IEnumerator对象的MoveNext()方法判断是否还有对象可读,且顺序向下依次读取,所以是没法倒着读,也不能用下标去改变读取的顺序。
 
 
 |