迭代器关键字foreach和yield

原文:http://www.blogbus.com/jangmon-logs/36380490.html

总结:

  1. 能使用foreach的集合类都要继承自IEnumerable,实现GetEnumerator方法,返回一个枚举器。
  2. 枚举器Enumerator类包含集合类对象,通常有属性Current表示当前元素,MoveNext()移动到下一个元素。
  3. 编译器看到foreach之后,根据关键字重新生成代码。修改为while(enumerator.MoveNext()){obj = enumerator.Current;}
  4. 编译器看到yield之后,生产一个Enumerator类,MoveNext()方法里面用Switch语句对于yield后面的值返回。
原文地址:https://www.cnblogs.com/wlqsmiling/p/3386982.html