集合已修改;枚举操作可能无法执行.为什么?

本文关键字:执行 为什么 修改 枚举 操作 集合 | 更新日期: 2023-09-27 17:59:32

对不起,我搜索了这个错误,但情况不同,对我没有帮助…

我想制作一个太空船入侵游戏,我把所有子弹都列为PicutreBox。

List<PictureBox> all_bullets = new List<PictureBox>();

当您按下空格按钮(激发按钮)时,将创建一个新项目符号,并将其添加到表单控件和列表中all_bullets

当buttle从形式if (_bullet.Location.Y <= 0)中移除时,该代码中的_bullet(如下)应从all_bullets列表中移除。

private void tmr_bullets_Tick(object sender, EventArgs e)
{
        foreach (PictureBox _bullet in all_bullets)
        {
            _bullet.Location = new Point(_bullet.Location.X, _bullet.Location.Y - 20);
            if (_bullet.Location.Y <= 0)
            {  all_bullets.Remove(_bullet);  }
        }
        nr_bullets.Text = Convert.ToString(all_bullets.Count);

错误:

集合已修改;枚举操作可能无法执行。

很抱歉,如果它被重新张贴,但我没有找到我需要的。

集合已修改;枚举操作可能无法执行.为什么?

在上枚举时不能修改集合

all_bullets.Remove(_bullet);  

当你在上枚举时,这将修改(从集合中删除一个项目)

你可以用黑客来做这个

foreach (PictureBox _bullet in all_bullets.ToList())