目录
枚举器和迭代器
枚举器和可枚举类型
int[] arr = { 1, 2, 3, 4 };
foreach (int i in arr)
{
Console.WriteLine(arr[i-1]);
}
利用foreach遍历数组,循环打印这些值。数组可以这样做的原因是数组可以按需提供一个枚举器(enumerator)的对象。枚举器可以依次返回请求的数组中的元素。
对于有枚举器的类型而言,需要一个方法获取它,获取的方法是调用对象的GetEnumerator方法。实现GetEnumerator方法的类型叫可枚举类型(enumerable type或enumerable)。数组是可枚举类型。
foreach结构设计用来和可枚举类型一起使用。
IEnumerator接口
Current返回序列中当前位置项的属性。
- 它是只读的
- 它返回object类型的引用,所以可以返回任何类型。
MoveNext是把枚举器位置前进到集合中下一项的方法。它也返回布尔值,指示新的位置是有效位置还是已经超过序列的尾部。
- 如果新的位置有效,返回true,反之,则返回false。
- 枚举器的原始位置在序列中的第一项之前,阴恻MoveNext必须在第一次使用Current之前调用。
Reset是把位置重置为原始状态的方法。
int[] arr = { 1, 2, 3, 4 };
IEnumerator enu = arr.GetEnumerator();
foreach (int i in arr)
{