“收益率回报”概念的名称是什么? IEnumerable,Iterator,Generator?

时间:2012-08-03 16:21:06

标签: c# ienumerable terminology yield

yield return概念的官方名称究竟是什么?

public IEnumerable<T> Bar() {
    ...
    yield return foo;
    ...
}

我已经听过(读)它被称为:

  • 迭代
  • IEnumerabe
  • 发电机
  • &lt;您的选择&gt;

不是迭代器只是一些&#34;事情&#34;迭代什么? List<T> IEnumerable<T>,所以看起来也不合理。

关于yield return使用这两个术语中的一个来谈论这里的很多答案。

&#34;发电机&#34 ;?或者,这只适用于你凭空捏造价值的情况,例如: Fibonacci数字,您不需要将数据收集作为来源?

3 个答案:

答案 0 :(得分:5)

作为非语言特定方式的一般概念,“生成器”可能是最常用的术语。如果我和不熟悉C#的人交谈,那就是我要用的。

该方法本身是C#规范术语中的迭代器。实现是迭代器块

来自C#4规范的第10.14节:

  

使用迭代器块(第8.2节)实现的函数成员(第7.5节)称为迭代器

这是我在专门讨论C#时使用的术语。

答案 1 :(得分:3)

它有用的原则是&#34; Coroutine&#34;。请参阅Wikipedia

  

协同程序是概括子程序的计算机程序组件   允许多个入口点暂停和恢复执行   在某些地方。协同程序非常适合实现更多功能   熟悉的程序组件,如协作任务,迭代器,   无限列表和管道。

答案 2 :(得分:1)

它被称为迭代器,请查看此MSDN页面

  

迭代器是执行a的方法,get访问器或运算符   使用yield对数组或集合类进行自定义迭代   关键字