【C#】——迭代器和分部类(上)

  • 了解什么是迭代器
  • 掌握如何创建迭代器
  • 了解什么是分部类
  • 掌握如何使用分部类

一、什么是迭代器?

        迭代器(iterator)是一种对象,它能够用来遍历标准模板库容器中的部分或全部元素,每个迭代器对象代表容器中的确定的地址。迭代器修改了常规指针的接口,所谓迭代器是一种概念上的抽象:那些行为上像迭代器的东西都可以叫做迭代器。然而迭代器有很多不同的能力,它可以把抽象容器和通用算法有机的统一起来。

1.迭代器是可以返回相同类型值的有序序列的一段代码;
2.迭代器可用作方法、运算符或get访问器的代码体;
3.迭代器代码使用yieldreturn语句依次返回每个元素,yield break将终止迭代;
4.可以在类中实现多个迭代器,每个迭代器都必须像任何类成员一样有惟一的名称,并且可以在foreach语句中被客户端,代码调用如下所示:foreach(int x in SimpleClass.Iterator2){};
5.迭代器的返回类型必须为IEnumerable和IEnumerator中的任意一种;
6.迭代器是产生值的有序序列的一个语句块,不同于有一个 或多个yield语句存在的常规语句块;
7.迭代器不是一种成员,它只是实现函数成员的方式,理解这一点是很重要的,一个通过迭代器实现的成员,可以被其他可能或不可能通过迭代器实现的成员覆盖和重载;
8.迭代器块在C#语法中不是独特的元素,它们在几个方面受到限制,并且主要作用在函数成员声明的语义上,它们在语法上只是语句块而已;
9.yield关键字用于指定返回的值。到达yieldreturn语句时,会保存当前位置。下次调用迭代器时将从此位置重新开始执行。 迭代器对集合类特别有用,它提供一种简单的方法来迭代不常用的数据结构(如二进制树)。

 迭代器是一种检查容器内元素并遍历元素的数据类型。   

二、迭代器的使用

创建迭代器最常用的方法是对 IEnumerator 接口实现 GetEnumerator 方法。

【例子】

创建一个 Windows 应用程序,向窗体中添加一个 RichTextBox 控件。创建一个名为 Family的类,其继承 IEnumerator 接口,该接口公开没拘束,该枚举数支持在非泛型集合上进行简单迭代。然后对 IEnumerator 接口实现 GetEnumerator 方法创建迭代器。最后在窗体的 Load 事件中使用 foreach 语句遍历 Family 类中的内容并输出。


猜你喜欢

转载自blog.csdn.net/cangsheng45/article/details/79781672