美文网首页
泛型类的迭代器设计

泛型类的迭代器设计

作者: ArimaKisho | 来源:发表于2017-08-29 10:00 被阅读5次

一个泛型类作为Collection,可枚举性(IEnumerable)是很重要的。正如C++的标准库里的集合要有对应的迭代器(Iterator),这样才能方便地foreach()等等。

泛型里的IEnumerable和IEnumerator:

1. 一个Collection要支持foreach方式的遍历,必须实现IEnumerable接口(亦即,必须以某种方式返回IEnumerator对象)。

2. IEnumerator对象具体实现了iterator(通过MoveNext(),Reset(),Current)。

3. 从这两个接口的用词选择上,也可以看出其不同:IEnumerable是一个声明式的接口,声明实现该接口的class是“可枚举(enumerable)”的,但并没有说明如何实现枚举器(iterator);IEnumerator是一个实现式的接口,IEnumerator对象就是一个iterator(迭代器)。

4. IEnumerable和IEnumerator通过IEnumerable的GetEnumerator()方法建立了连接,可以通过IEnumerable的GetEnumerator()得到IEnumerator对象。(当前状态,遍历,尾递归)

5. 由于IEnumerable扩展(继承)了旧的IEnumerable接口,所以要实现两个不同的方法:

IEnumerator GetEnumerator();

IEnumerator GetEnumerator(); // 由于和泛型版本的方法同名,所以该方法的实现需要使用显式接口实现

相关文章

  • 泛型类的迭代器设计

    一个泛型类作为Collection,可枚举性(IEnumerable)是很重要的。正如C++的标准库里的集合要有对...

  • Collection、泛型

    【Collection、泛型】 主要内容 Collection集合 迭代器 增强for 泛型 Collection...

  • c++学习记录8(GeekBand)

    这周的课讲了将泛型算法。现在将泛型算法收集下,备用。 (1)泛型算法用迭代器来解决第一个要求:遍历容器。所有迭代器...

  • Java-泛型

    day02【Collection、泛型】 主要内容 Collection集合 迭代器 增强for 泛型 教学目标 ...

  • 2019-10-30

    day02【Collection、泛型】 主要内容 Collection集合 迭代器 增强for 泛型 教学目标 ...

  • day02【Collection、泛型】

    day02【Collection、泛型】 主要内容 Collection集合 迭代器 增强for 泛型 教学目标 ...

  • 007-集合,list,set,map

    集合的概念 Collection集合 常用方法 迭代器 迭代器使用 迭代器的问题 泛型 代码演示: ArrayLi...

  • DAY15

    迭代器。iterator 泛型 Map映射 遍历映射 断言

  • C++ 模版

    模版 模板是创建泛型类或函数的蓝图或公式。库容器,比如迭代器和算法,都是泛型编程的例子,它们都使用了模板的概念 每...

  • 【Collection、泛型】

    【Collection、泛型】 主要内容 Collection集合 迭代器 增强for 泛型 第一章 Collec...

网友评论

      本文标题:泛型类的迭代器设计

      本文链接:https://www.haomeiwen.com/subject/raandxtx.html