我是一名VB.Net开发人员,是C#的新手, 在查看C#文档时,我通过迭代器和生成器来了,无法完全理解其使用,我有任何人可以解释(在vb中有洞察力;如果可能的话)
答案 0 :(得分:22)
迭代器是生成项目序列的简便方法,无需自己实现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的this article。