18. 枚举器和迭代器

本文详细介绍了C#中的枚举器和迭代器的概念与使用,包括枚举器的获取、IEnumerator接口、IEnumerable接口的实现,以及泛型枚举接口。重点讲解了迭代器的工作原理,如迭代器块、yield return和yield break语句的作用,并探讨了如何通过迭代器创建枚举器和可枚举类型。此外,还讨论了迭代器在实际应用中的模式及其实质。
摘要由CSDN通过智能技术生成

目录

18.1 枚举器和可迭代枚举

18.2 IEumerator接口

IEnumerable接口

使用IEnumerable和IEnumerator的示例

18.3 泛型枚举接口

18.4 迭代器

18.4.1 迭代器块

18.4.2 使用迭代器来创建枚举器

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

18.5 常见迭代器模式

 18.6 产生多个可枚举类型

 18.7 将迭代器作为属性

18.8 迭代器实质 


18.1 枚举器和可迭代枚举

使用foreach语句;当我们使用foreach语句时,这个语句为我们以此取出数组中的每一个元素,允许我们读取它的值。之所以可以这样是因为数组可以按需提供一个枚举器(enumeator)的对象。枚举器可以依次返回请求的数组中的元素。枚举器知道项的次序并且跟踪他在序列中的位置,然后返回请求当前项。

对于有枚举器的类型而言,必须有一个方法来获取它。获取一个对象枚举器的方法是调用对象的GetEnumerator方法。实现GetEnumerator方法的类型叫做可枚举类型(enumerable type或enumerable)。数组是可枚举类型。

18.2 IEumerator接口

实现了IEnumerator接口的枚举器包含三个成员:Current、MoveNext以及Reset。

  • Current是返回序列中当前位置项的属性。
  1. 他是只读属性
  2. 他返回object类型的引用,所以可以返回任何类型。
  • MoveNext是枚举器位置前进到集合中下一项的方法。它也返回布尔值,指示新的位置是有效位置还是已经超过了序列的尾部。
  1. 如果新的位置是有效的返回true;
  2. 如果新的位置是无效的(比如当前位置到达尾部)方法返回false;
  3. 枚举器的原始位置在序列中的第一项之前,因此MoveNext必须在第一次使用Current之前调;
  • Reset是吧位置重置为原始状态的方法。

有了集合的枚举器,我们就可以使用MoveNext和Cureent来模仿foreach循环遍历集合中的项。

IEnumerable接口

可枚举类是指实现了IEnumerable接口的类。IEnumerable接口只有一个成员——GetEnumerator方法,它返回对象的枚举器。

使用IEnumerable和IEnumerator的示例

 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大西瓜写java、C#、.NET

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值