在 C# 中,迭代器提供了一种方便的方式来循环访问数据集合或序列。它们允许您为类定义自定义迭代行为,类似于将 foreach 用于内置集合(如数组或列表)的方式。
C# 语言中的迭代器
C# 中的迭代器方法是使用 yield 关键字定义的。此关键字用于一次返回一个集合的每个元素,这允许调用者循环访问集合,而无需一次将整个序列加载到内存中。
public IEnumerable MyIteratorMethod()
{
// yield return statements
}
迭代器方法通常返回 IEnumerable<T>、IEnumerable<T> 或实现 IEnumerable<T>; 的自定义类型。
此语句逐个返回序列的每个元素。方法执行暂停,并保留当前状态,允许调用方检索生成的值。
此语句表示迭代的结束。它终止迭代并将控制权归还给调用方。
public IEnumerable<int> FetchNumbers()
{
for (int i = 1; i <= 10; i++)
{
yield return i;
}
}
可以将 C# 中的迭代器方法与 foreach 循环或 LINQ 查询一起使用,就像任何其他集合一样:
var numbers = FetchNumbers();
foreach (var number in numbers)
{
Console.WriteLine(number);
}
您可以使用 Linq aslo 来迭代产量数字。
var evenNumbers = FetchNumbers().Where(num => num % 2 == 0);
元素是按需生成的,这提高了性能和内存效率。
迭代器方法简化了需要生成序列或集合的代码。
与 LINQ 无缝集成以进行查询。
C# 中的迭代器提供了一种强大的机制,用于定义自定义可枚举类型或序列,而无需实现整个 IEnumerable 接口。在处理大型数据集时,或者当您想要将数据生成和数据使用的关注点分开时,它们特别有用。