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

pha*_*t0m 1 c# ienumerable yield terminology

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

public IEnumerable<T> Bar() {
    ...
    yield return foo;
    ...
}
Run Code Online (Sandbox Code Playgroud)

我听说(读)它被称为:

  • 迭代器
  • IEnumerabe
  • 发电机
  • <您的选择>

迭代器不只是迭代某些东西的"东西"吗?A List<T> 一个IEnumerable<T>,所以似乎也不合理.

这里有很多答案,谈论yield return使用这两个术语中的一个.

那么"发电机"怎么样?或者这只适用于你"凭空捏造价值",例如你不需要数据收集作为来源的Fibonacci数字?

Jon*_*eet 5

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

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

从C#4规范的第10.14节:

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

这是我在谈论C#时使用的术语.