【发布时间】:2016-07-05 10:08:24
【问题描述】:
在阅读 Twitter 时,我发现了我关注的一位游戏开发者的推文,上面说的是;
@ChevyRay2:44 AM - 5 Jul 2016
我给你:我写过的最愚蠢的 8 行代码,实际上被我的游戏代码使用了static IEnumerable<int> RightAndleft { get { yield return 1; yield return -1; } }
我立刻看着它,心想这是做什么的?我确定这篇文章是开玩笑的,但我只是没有明白。因此,我去研究了yield,但这并没有真正回答我的问题。
我想知道这里是否有人可以首先阐明它在做什么以及为什么。
【问题讨论】:
-
它返回 2 个整数,左右分别为 1 和 -1 ..
-
感谢@BugFinder 的快速回复,但这就是我想要理解的,一个属性如何返回两个值,这是
yield允许你做的吗?我想我只是不明白语法? -
这里有很多编译器魔法。看看编译器把它变成了什么:它创建一个内部类(一个状态机),
RightAndLeft返回这个类的一个实例。 tryroslyn.azurewebsites.net/… -
@Lankymart 这是很多的语法糖。这家伙总是把事情解释得很好:youtube.com/…
-
是的。对于我们这些在它之前的日子里编码的人来说,Yield 在某种程度上是一个相当大的改变,但是......它是一种处理它的可爱方式
标签: c# yield-return