介绍一下IEnumerator 和 IEnumberator

匿名网友 匿名网友 发布于: 2015-08-30 00:00:00
阅读 111 收藏 0 点赞 0 评论 0

IEnumerable 只是表明某个对象能够被枚举,真正的工作是由IEnumerator的Current、 MoveNext、Reset完成的,为什么要有2个不同的接口来作枚举呢?主要是考虑到被枚举的对象会有多个独立的客户端调用。

在现实应用中,对于集合以及枚举这些集合的需求非常普遍, 因此在.NET中集合所依赖的接口被设计为公共的。想要实现对象的枚举就必须继承IEnumerable接口。

public interface IEnumerable

{

public IEnumerator GetEnumerator();

}

它只有一个成员:GetEnumerator方法。该方法返回一个世纪的枚举器(enumerator)对象。

要定义一个枚举器就要必须实现IEnumrator接口:

public interface IEnumerator

{

public Boolean MoveNext();

public Object Current { get; }

public void Reset();

}

也就是说如果我们希望一个类型支持枚举特性,那么我们就必须还要额外定义一个辅助类型来实现IEnumerator的所有方法。这个辅助类型通常被定义为一个Nested class声明在主类内部。这样在实现的时候我们发现,在app调用GetEnumerator()方法时,我们需要构造一个辅助类型的实例作为返回值。

1、一个Collection要支持foreach方式的遍历,必须实现IEnumerable接口(亦即,必须以某种方式返回IEnumerator object)。
评论列表
文章目录