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
,但这并没有真正回答我的问题。
我想知道这里是否有人可以首先说明它在做什么以及为什么。
编译器将此代码转换为枚举数。您可以使用此枚举器遍历序列{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
和-1
的IEnumerable<int>
对象。
见https://msdn.microsoft.com/en-us/library/9k7k7cf0.aspx