枚举接口:IEnumerable和IEnumerator
枚举接口IEnumerable和IEnumerator是迭代器模式(iterator pattern)在C#中的实现。它们实现在集合上进行简单迭代的效果。
1.IEnumerable接口定义了一个可以返回IEnumerator类型对象的方法:GetIEnumerator。
2.IEnumerator接口在它内部的字段和方法主要有三个:
1.current字段,它是只读(属性只有get)的。
2.MoveNext函数,对集合上实现循环迭代的效果。返回一个bool值,来表示是否可以继续迭代。
3.Reset函数,表示将枚举数设置为其初始位置,该位置位于集合中第一个元素之前。
迭代器在没有执行MoveNext之前函数是不会开始的,只有调用了第一次MoveNext迭代器才会开始运行。
迭代器运行之前的Current值是该类型的默认值,比如我们使用int类型,Current在MoveNext执行前的值就是0。
且在迭代器里的值在yield return后不会销毁,它会存在直至迭代器逻辑结束。
当迭代器逻辑运行到最后一个yield return,MoveNext返回值也是true,这样能保证最后一个yield return之后的逻辑能够顺利运行,当这最后的逻辑执行完,我们再次执行MoveNext才会是false。