1.概要
主要思想和实现方式: 迭代器模式的主要思想是将数据的存储和遍历分离,使得客户端可以通过统一的接口遍历不同类型的集合,而不需要关心集合的具体实现。在C#中,迭代器模式可以通过实现IEnumerable
接口和IEnumerator
接口来实现。IEnumerable
接口定义了一个方法GetEnumerator()
,该方法返回一个实现了IEnumerator
接口的迭代器对象。IEnumerator
接口包含了MoveNext()
方法,用于移动迭代器到集合的下一个元素,以及Current
属性,用于获取当前元素的值。
适用场景:
- 当集合背后为复杂的数据结构,且希望对客户端隐藏其复杂性时,可以使用迭代器模式。迭代器封装了与复杂数据结构进行交互的细节,提供了简洁的遍历接口。
2.详细内容
代码示例
代码语言:javascript复制using System;
using System.Collections;
// 定义一个集合类
class MyCollection : IEnumerable
{
private object[] items = new object[5];
public MyCollection()
{
// 初始化集合元素
for (int i = 0; i < 5; i )
{
items[i] = i;
}
}
// 实现IEnumerable接口的方法,返回一个迭代器对象
public IEnumerator GetEnumerator()
{
return new MyIterator(items);
}
}
// 定义一个迭代器类
class MyIterator : IEnumerator
{
private object[] items;
private int position = -1;
public MyIterator(object[] items)
{
this.items = items;
}
// 实现IEnumerator接口的属性和方法
public object Current
{
get { return items[position]; }
}
public bool MoveNext()
{
position ;
return position < items.Length;
}
public void Reset()
{
position = -1;
}
}
class Program
{
static void Main(string[] args)
{
MyCollection collection = new MyCollection();
foreach (int item in collection)
{
Console.WriteLine(item);
}
}
}