迭代器模式是行为模式的一种范例,行为模式是一种简化对象之间通信的设计模式。实际上,它允许你访问一个数据项序列中的所有元素,而无须关心序列是什么类型--数组、列表、链表或者任何其他类型。它能非常有效地构建出一个数据管道,经过一系列不同的转换或过滤后再从管道的另一端出来,实际上,这也是Linq的核心模式之一。
在.NET中,迭代器模式是通过IEnumerator和IEnumerable接口及他们的泛型等价物来封装的。如果某个类型实现了IEnumerable接口,就意味着它可以被迭代访问。调用GetEnumerator方法将返回IEnumerator的实现,这就是迭代器的本身。可以将迭代器想象成数据库的游标,即序列中的某个位置。迭代器只能在序列中向前移动,而且对于同一个序列可能同事存在多个迭代器操作。
我们用的foreach语句实现了访问迭代器的内置支持。foreach语句被编译后会调用GetEnumerator和MoveNext方法,以及current属性,加入IDisposable也实现了,程序最后还会自动销毁迭代器对象,这是一个虽不起眼但是却很有用的语法糖。
时间: 2024-10-25 01:25:38