繁体   English   中英

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

[英]What is the purpose of Yield and how does it work?

在仔细阅读推特的同时,我发现游戏开发者发了一条推文。

@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

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

有关更多信息,请参阅yield关键字

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


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

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

请参阅https://msdn.microsoft.com/en-us/library/9k7k7cf0.aspx

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM