知识点一、迭代器是什么
知识点二、标准迭代器的实现方法
迭代器可以使我们能够通过foreach来遍历 CustimList中list。
直接写会报错。
我们需要让这个类继承接口。 IEnumerable
实现其中方法
只继承IEnumrale接口是不行的。还需要继承另一个接口,IEnumerator。
实现接口:
foreach执行原理:
完善接口方法:
1、先设置一个光标为-1.
2、设置MoveNext()的返回条件
3、设置Current属性
4、设置返回的IEnumerator()
运行测试:
再次遍历:
发现只遍历了一次。因为Reset()没有设置。遍历完第一次后,Position就在list末尾处了。第二次无法遍历。
在内部调用Reset();在初始执行foreach遍历时执行Reset()
知识点三 用yield return 语法糖实现迭代器
本质上 当执行GetEnumerator()返回时,系统发现yield return.会帮助我们完成MoveNext()方法、以及得到Cureeent的内容。
知识点四 用yield return 语法糖为泛型类实现迭代器