gpt4 book ai didi

c# - 通过无限循环示例在 C# 中产生

转载 作者:行者123 更新时间:2023-11-30 18:58:42 30 4
gpt4 key购买 nike

我想了解 yield 在 C# 中的工作原理。为了测试,我做了一些示例代码:

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)
{
}
}
}
}

此代码仅尝试运行一次 Begin 函数并无限次调用函数 Play。请告诉我为什么我从未在控制台中看到我的消息?

最佳答案

你需要枚举集合,你只要检查结果是否为null即可或不,那将不会开始枚举。

foreach (var frame in GameState.MainLoop())
{
//Do whatever with frame
}

使其与 `foreach 一起工作你可以制作MainLoop方法返回 IEnumerable<GameFrame>而不是 IEnumerator<GameFrame>或者只是使用

var enumerator = GameState.MainLoop();
while (enumerator.MoveNext())
{
//Do whatever with enumerator.Current
}

关于c# - 通过无限循环示例在 C# 中产生,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22449938/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com