gpt4 book ai didi

c# - 如何制作无限foreach循环?

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

我想做一个 foreach 循环来经常给游戏中的玩家金币,我尝试了以下方法:

foreach (KeyValuePair<int, string> kVP in names)
{
player[kVP.Key].gold += 1;
continue;
}

但这并不是无限的。它实际上只给了 1 金币,然后停止了。

如果有帮助,namesDictionary<int, string> .

我确实意识到 foreach 循环永远不会停止,但它并没有给我带来任何好处。

注意:每个人,我知道我不应该使用 foreach 循环,但是需要 kVP.Key,因为它通过 id 来标识玩家,它在 player[] 的 [] 中。我不知道如何在另一个循环中得到它

最佳答案

你应该有一个游戏循环,它应该在游戏运行时运行。在该循环中,如果自此代码上次运行以来已经足够长(因为,大概您不希望游戏循环的每一次迭代都运行此代码,而是每第 N 次迭代都运行此代码),您将运行此代码。

当然 continue; 是没有意义的,可以简单地删除。当到达主体的末尾时,它已经知道要进行下一次迭代;你不需要多余地说明这一点,也不是说它真的会伤害任何东西(超出可读性)。


当然,只是为了回答你问的字面问题(即使它不能解决你的问题),这里有一个简单的扩展方法,你可以调用一个序列以无限地重复它:

public static IEnumerable<T> RepeatForever<T>(this IEnumerable<T> sequence)
{
while (true)
foreach (var item in sequence)
yield return item;
}

因此允许你写:

foreach (KeyValuePair<int, string> kVP in names.RepeatForever())
{
player[kVP.Key].gold += 1;
}

永远不断地增加黄金。

关于c# - 如何制作无限foreach循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21123672/

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