“;收益率;概念IEnumerable、Iterator、Generator

本文关键字:Iterator Generator 概念 收益率 IEnumerable | 更新日期: 2024-10-18 13:03:42

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

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

我听说(读过)它被称为:

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

迭代器不就是某种"东西"吗?List<T>IEnumerable<T>,所以看起来也不合理。

SO上很多关于yield return的答案都使用了这两个术语中的一个。

"发电机"呢?或者这只适用于你"凭空创造值"的情况,例如斐波那契数,你不需要数据收集作为来源?

“;收益率;概念IEnumerable、Iterator、Generator

作为一个非特定语言的通用概念,"生成器"可能是最常见的术语。如果我和一个不熟悉C#的人交谈,我会用这个词。

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

来自C#4规范第10.14节:

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

这是我在具体讨论C#时使用的术语。

不过它有用的主体是"Coroutine"。请参阅维基百科。

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

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

迭代器是执行通过使用yield对数组或集合类进行自定义迭代关键词