https://en.wikipedia.org/wiki/Iterator_pattern

参考C#中的IEnumerable和IEnumerator接口, 以string为例(代码摘自C# 5.0 in a nutshell第4章和第7章相关章节)1
2
3
4
5
6
7
8
9string s = "Hello";
// Because string implements IEnumerable, we can call GetEnumerator():
IEnumerator rator = s.GetEnumerator();
while (rator.MoveNext())
{
char c = (char) rator.Current;
Console.Write (c + ".");
}
// Output: H.e.l.l.o.
IEnumerable接口等同于Aggregate接口
IEnumerator接口等同于Iterator接口1
2
3
4
5
6
7
8
9
10
11public interface IEnumerable
{
IEnumerator GetEnumerator();
}
public interface IEnumerator
{
bool MoveNext();
object Current { get; }
void Reset();
}
GetEnumerator方法等同于CreateInterator方法
string实现IEnumerable
这是C# 1.0. 之后用法上引入了foreach, 实现上引入了yield return.