C#学习笔记之——枚举器和迭代器

本文详细探讨了C#中的枚举器和迭代器,包括枚举器和可枚举类型的概念,IEnumerator和IEnumerable接口的介绍,泛型枚举接口的使用,以及迭代器的工作原理和常见应用。通过迭代器,开发者可以轻松创建枚举器和可枚举类型,简化代码并提高效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

枚举器和迭代器

枚举器和可枚举类型

IEnumerator接口

IEnumerable接口

泛型枚举接口

迭代器

迭代器块

使用迭代器来创建枚举器

使用迭代器来创建可枚举类型

常见迭代器模式

产生多个可枚举类型

将迭代器作为属性

迭代器的实质


枚举器和迭代器

枚举器和可枚举类型

            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)
            {
       
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值