和普通集合类一样,在C#中也可以使用泛型迭代器来实现泛型集合。泛型迭代器和非泛型迭代器的用法类似,唯一的区别是泛型迭代器的返回类型必须是IEnumerable<T>和IEnumerator<T>。在本节的内容中,将通过一个具体实例的实现过程,向读者讲解C#泛型迭代器的使用过程。
实例61:使用泛型迭代器处理列表
本实例保存在“光盘:\daima\13”文件夹内,项目名为diedaiqi。本实例的功能是,通过泛型迭代器对定义的集合对象进行处理,并输出显示处理后的列表数据。实例文件的主要代码如下:
上述实例代码的设计流程如下。
1)通过using调用System.Collections.Generic类,定义命名空间diedaiqi。
2)自定义泛型类mm,设置类型为T。
3)定义类mm的构造函数,并设置其ArrayList类型成员qiuduis,用于存储数据。
4)分别实现方法Add()、Rmove()和GetEnumerator()的操作处理。
5)通过yield迭代,返回对象集合列表内的数据。
6)定义自定义类mm的成员club,用于存储数据。
7)通过方法Add()向club内添加五个数据。(www.xing528.com)
8)使用foreach将当前的数据输出显示。
执行后将输出显示操作处理后的数据,如图13-4所示。
由此可以看出,通过泛型迭代器可以同样操作对象的数据,并且减少了代码编写量。
图13-4 实例执行结果
多学一招
在C#1.0中,若想使类型成为可枚举的类型(即如同使用数组一样使用foreach枚举数组中的成员),那么这个类中必须实现IEnumerable接口的GetEnumerator()方法返回IEnumerator:
一般来说实现GetEnumerator是不容易的,从C#2.0开始引入了的新的语法扩充—迭代器,它简单方便地实现GetEnumerator()方法。
另外,从C#2.0开始引入了一个“不全代码”的概念,即可以将一个类的定义放在别的文件中。这样给大项目、大文件的维护带来了方便。不全代码的声明格式如下:
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。