为什么GetEnumerator()存储在与IEnumerator不同的接口中?

Sco*_*ies 7 c# ienumerable ienumerator iterator

我想知道为什么GetEnumerator()方法是从IEnumerator中分解出来并放在IEnumerable中的.在我看来,将所有枚举器方法保留在IEnumerator中会更有意义.

谢谢,

斯科特

Eil*_*lon 18

问问自己"想象一下这是不是真的".

如果所有枚举方法都在一个接口上,那么两个调用者如何同时枚举同一个列表呢?

有两个接口,因为有一个接口说,"你可以枚举我",而另一个说,"这是一个跟踪给定枚举任务的对象."

IEnumerable接口是一个工厂,创建尽可能多的IEnumerator,只要你想的对象.这些调查员如何以及何时被使用取决于消费者.


Rob*_*Rob 7

IEnumerable意味着该对象是可以以线性方式迭代的数据的集合或来源.IEnumerator是执行迭代的实际实现的接口.