Edw*_*d83 2 c# state loops yield
我试图了解C#中的yield如何工作.为了测试我做了一些示例代码:
using System;
using System.Text;
namespace ConsoleApplication1
{
class GameFrame
{
};
class GameState
{
public static GameFrame Begin()
{
Console.WriteLine("GameState.Begin");
return new GameFrame();
}
public static GameFrame Play()
{
Console.WriteLine("GameState.Play");
return new GameFrame();
}
public static System.Collections.Generic.IEnumerator<GameFrame> MainLoop()
{
yield return Begin();
while (true)
{
yield return Play();
}
}
};
class Program
{
static void Main()
{
while (GameState.MainLoop() != null)
{
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
此代码仅尝试运行一次Begin函数并调用无限次函数Play.请告诉我为什么我从未在控制台中看到我的消息?
Sri*_*vel 12
您需要枚举集合,您只需检查结果是否结果null,不会启动枚举.
foreach (var frame in GameState.MainLoop())
{
//Do whatever with frame
}
Run Code Online (Sandbox Code Playgroud)
为了使它可以使用`foreach,可以使MainLoop方法返回IEnumerable<GameFrame>而不是IEnumerator<GameFrame>只是使用
var enumerator = GameState.MainLoop();
while (enumerator.MoveNext())
{
//Do whatever with enumerator.Current
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1156 次 |
| 最近记录: |