Yield的目的是什么?它是如何工作的?

本文关键字:工作 何工作 是什么 Yield | 更新日期: 2023-09-27 17:54:43

在浏览Twitter时,我发现了一个游戏开发者的推文,我关注了它,上面写着;

@ChevyRay 2:44 AM - 2016年7月5日
我给你:我写过的最愚蠢的8行代码,实际上是我的游戏代码

static IEnumerable<int> RightAndleft
{
    get
    {
        yield return 1;
        yield return -1;
    }
}

我立刻看着它,心想这是干什么用的?我确信这篇帖子是一个笑话,但我就是不明白。因此,我去研究了yield,但这并没有真正回答我的问题。

我想知道这里是否有人可以首先说明它在做什么以及为什么。

Yield的目的是什么?它是如何工作的?

编译器将此代码转换为枚举数。您可以使用此枚举器遍历序列{1, -1}:

foreach(var i in ClassName.RightAndLeft)
    Console.WriteLine(i);

搜索结果

1
-1

注意,这个属性有两个返回语句和返回类型int。返回一个IEnumerable<int>,一个包含1-1的序列。

参见yield关键字获取更多信息。

需要注意的一个重要部分是,第二行yield return -1;在之后执行,在本例中,第一个值已由Console.WriteLine打印出来。


由于海报者是游戏开发者,他可能会使用这两个值作为方向指示器,而这个列举列举了所有可能的方向或类似的东西。

返回包含1-1IEnumerable<int>对象。

见https://msdn.microsoft.com/en-us/library/9k7k7cf0.aspx