在浏览 Twitter 时,我发现了一位游戏开发者的推文,我关注了他刚才所说的内容;
@ChevyRay 2:44 AM - 5 Jul 2016
i give you: the stupidest 8 lines of code i’ve ever written that is actually used by my game’s codestatic 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 keyword获取更多信息。
需要注意的一个重要部分是第二行 yield return -1;
在第一个值被 Console.WriteLine
打印出来后 执行在这个例子中。
由于张贴者是一名游戏开发者,他可能使用这两个值作为方向指示器,并使用此枚举来枚举所有可能的方向或类似的东西。
关于c# - Yield 的目的是什么,它是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38200654/