gpt4 book ai didi

C# 等待函数返回 yield break 以继续

转载 作者:太空宇宙 更新时间:2023-11-03 13:37:00 25 4
gpt4 key购买 nike

我在 Unity 工作,我有一个大脚本。在脚本中的某个时刻,协程 foo 将启动。我希望此协程运行另一个 IEnumerator 函数 bar,但我不希望 bar 作为协程启动。相反,我需要 foo 开始运行,可能会 yield 几次,调用 bar,等待 bar 运行完毕,然后继续运行。目前我必须让 bar IEnumerable 来做:

void Start () {
StartCoroutine(foo());
}

IEnumerator foo () {
//Do something up here
foreach (int x in bar()) {
yield return null; //Wait for bar to yield break
}
//Do more stuff down here
yield break;
}


IEnumerable bar () {
for (int x=0; x < 5; x++) {
//Do Something 5 Times
yield return x;
}
yield break;
}

我一直在搜索,但找不到执行此操作的正确方法。当然会有超过 10 个这样的“条”函数,所以我不想每次调用一个时都必须做一个 for 循环。如何以这种方式调用其他 IEnuerator 函数?

最佳答案

您正在寻找的是通常称为 yield foreach 的东西。这是一项不存在的功能(尽管经常被要求)。你几乎被迫做你在这里做的事情。

当您编写一个迭代器 block 并且您希望单独产生其他一些 IEnumerableIEnumerator 的每个项目时,您别无选择,只能显式枚举排序并产生每个项目。如果您可以编写类似 yield foreach Bar() 的代码,那就太好了,但您不能。您现有的解决方案与使用当前语言功能一样好。

关于C# 等待函数返回 yield break 以继续,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18364005/

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