什么场景下,能自己实现这两个接口: IEnumerable IEnumerator

什么场景下,会自己实现这两个接口: IEnumerable IEnumerator
IEnumerable:  公开枚举数,该枚举数支持在非泛型集合上进行简单迭代。【一个获取迭代器的方法】
IEnumerator :  支持对非泛型集合的简单迭代。【一个MoveNext、一个Current、一个Reset】

看了网上其他关联的帖子,都是写的代码,没看到实实在在的应用场景,自己开发过程中,也没遇过,所以想请问大神,什么样的场景下才会自己去实现这两个接口,来迭代非泛型集合。
------解决方案--------------------
这两个接口是用来装B的,我装B的时候才用。微软喜欢搞这些一层一层的框架。
------解决方案--------------------
在C# 2.0以前,因为没有yield关键字,为了实现一个迭代器,有必要手工实现它们,参考:

http://bbs.csdn.net/topics/390786969

在这个例子中,我们如果需要遍历一个字符串中的所有单词,当然有一个办法是用Split全部分割并且装入数组。但是如果我们只需要迭代出前5个单词,这么做白白浪费了内存和CPU。如果借助迭代器,我们可以按需遍历其中开头的一部分。
------解决方案--------------------
你去把设计模式里的迭代模式看一下