我想制作一个foreach循环,以便经常给游戏中的玩家提供金牌,我尝试了以下方法:
foreach (KeyValuePair<int, string> kVP in names)
{
player[kVP.Key].gold += 1;
continue;
}
Run Code Online (Sandbox Code Playgroud)
但这并不是无限的.它实际上只给出1金,并停止.
如果它有帮助,names是一个Dictionary<int, string>.
我确实意识到foreach循环永远不会停止,但它并没有给我任何金币.
注意:每个人,我看到我不应该使用foreach循环,但需要kVP.Key,因为它通过其id识别一个玩家,这是在玩家[]的[]中.我不知道如何在另一个循环中获得它
你应该有一个游戏循环,它应该在游戏运行时运行.在该循环中,如果自上次执行此代码以来已经足够长(因为,可能,您不希望这次运行游戏循环的每次迭代,而是每次N次迭代),您将运行此代码.
当然,这continue;是毫无意义的,可以简单地删除.当到达身体的末端时,它已经知道进入下一次迭代; 你不需要冗余地陈述这一点,而不是它真的伤害任何东西(超出可读性).
当然,只是为了回答你提出的字面问题(即使它没有解决你的问题),这里有一个简单的扩展方法,你可以调用序列,以便无限重复它:
public static IEnumerable<T> RepeatForever<T>(this IEnumerable<T> sequence)
{
while (true)
foreach (var item in sequence)
yield return item;
}
Run Code Online (Sandbox Code Playgroud)
从而允许你写:
foreach (KeyValuePair<int, string> kVP in names.RepeatForever())
{
player[kVP.Key].gold += 1;
}
Run Code Online (Sandbox Code Playgroud)
永远加入黄金.
| 归档时间: |
|
| 查看次数: |
2970 次 |
| 最近记录: |