17

我是一名 VB.Net 开发人员,是 C# 的新手,在查看 C# 文档时,我通过迭代器和生成器,无法完全理解其用途,我有任何人可以解释(在 vb 感知中;如果可能的话)

4

1 回答 1

30

IEnumerable<T>迭代器是一种生成项目序列的简单方法,无需IEnumerator<T>自己实现。迭代器是一种返回IEnumerable<T>可在 foreach 循环中枚举的方法的方法。

这是一个简单的例子:

public IEnumerable<string> GetNames()
{
    yield return "Joe";
    yield return "Jack";
    yield return "Jane";
}

foreach(string name in GetNames())
{
    Console.WriteLine(name);
}

注意这些yield return语句:这些语句实际上并没有从方法中返回,它们只是将下一个元素“推送”给正在阅读实现的任何人。

当编译器遇到迭代器块时,它实际上将其重写为实现IEnumerable<T>和的类中的状态机IEnumerator<T>。迭代器中的每个yield return语句对应于该状态机中的一个状态。

有关迭代器的更多详细信息,请参阅Jon Skeet 的这篇文章

于 2010-09-22T10:05:24.307 回答