gpt4 book ai didi

c# - 集合被修改;枚举操作可能无法执行

转载 作者:行者123 更新时间:2023-11-30 14:37:04 27 4
gpt4 key购买 nike

我有这段代码,如果玩家不活着,就会删除玩家,但我认为问题出在 foreach 循环上。我见过涉及制作新列表的解决方案,但我看不出如何将它应用到我的代码中。谁能解释一下?

private Dictionary<int, Player> numPlayers = new Dictionary<int, Player>();

private void CheckPlayers()
{
foreach (Player player in numPlayers.Values)
{
if (!player.isAlive)
{
canvas.Children.Remove(player.hand);
numPlayers.Remove(player.id); // breaks here
}
}
}

最佳答案

查询要删除的玩家集合:

var playersToDelete = numPlayers.Values.Where(p => !p.isAlive).ToList();

然后删除玩家:

foreach(var player in playersToDelete) {
canvas.Children.Remove(player.hand);
numPlayers.Remove(player.id);
}

关于c# - 集合被修改;枚举操作可能无法执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9726484/

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