日期:2014-05-17  浏览次数:20820 次

IEnumerator是一个实现式的接口,什么叫实现式接口他和ienumerable接口有什么区别他们之间有什么联系?
IEnumerator是一个实现式的接口,什么叫实现式接口他和ienumerable接口有什么区别他们之间有什么联系?

------解决方案--------------------
IEnumerator 泛型接口是支持在泛型集合上进行简单迭代。
参考MSDNhttp://msdn.microsoft.com/zh-cn/library/78dfe2yb(v=vs.80).aspx
------解决方案--------------------
IEnumerable接口有一个GetEnumerator方法,返回一个IEnumerator迭代器。
而IEnumerator接口有MoveNext Reset Current等方法,执行迭代。

为什么要这么做呢?如果你看过GoF的设计模式就知道了,迭代器分为两种,一个是内迭代器,一个是外部迭代器,后者是指,由一个外部对象控制对集合对象的迭代过程。
而IEnumerator和IEnumerable分离,使得逻辑上“可迭代的”和实现上的“如何迭代”这两个问题被分离出来,如果没有IEnumerable,只有IEnumerator,就必须将迭代器的实现和可迭代的集合这两者组合在一个类中。