C# 自带的iterator
时间: 2024-08-14 09:01:55 浏览: 33
在C#中,Iterator是一种特殊的函数,用于遍历集合类型的对象,如列表、数组等。它提供了一种更优雅的方式来处理迭代过程,尤其是当数据源可能很大或者需要按需加载时。C#的Iterator实现了`IEnumerator<T>`接口,通过yield关键字来声明迭代器,这种方式使得代码看起来像一个序列,但实际上它是逐个生成值的。
使用Iterator的好处包括:
1. 简化了循环结构:可以直接foreach循环遍历,不需要手动跟踪索引。
2. 可缓存结果:如果数据结构支持,可以避免多次访问底层存储。
3. 支持延迟加载:可以分阶段返回数据,节省内存资源。
C#中创建Iterator的基本步骤如下:
1. 定义一个类,并实现IEnumerator<T>接口或者它的派生类。
2. 使用yield关键字声明yield return语句,返回每个元素。
3. 在IEnumerator<T>.MoveNext()方法中控制迭代流程。
例如:
```csharp
public class MyCollection : IEnumerable<int>
{
private List<int> data;
// ... 实现 IEnumerator<int> 接口
public IEnumerator<int> GetEnumerator()
{
foreach (int item in data)
{
yield return item;
}
}
IEnumerator IEnumerable.GetEnumerator() => GetEnumerator();
}
```