1
foreach (var shotItem in Invadershots)// it points to me to there and doesnt allow me to loop.."{"Collection was modified; enumeration operation may not execute."}"
{
  shotItem.Move();// it happens when this simple method called (which actually checks some bool..if the shot was out of the winform).
  if (shotItem.removeShot)
  {
        Invadershots.Remove(shotItem);
  }
}

リストの項目を同時に変更したからでしょうか?
そのエラーの発生を防ぐにはどうすればよいですか?

4

3 に答える 3

5

これは、コレクションを変更しようとしているためですInvadershots

Invadershots.Remove(shotItem);

これはforeach内では許可されていません。代わりにforを使用してください。

于 2011-04-15T10:31:06.063 に答える
3

コレクション全体を列挙している間は、コレクションを変更することはできません。コレクションのクローンを作成し、それを変更します。

于 2011-04-15T10:30:59.713 に答える
1

Foreachで読んでいるリストに要素を削除することはできません。確かに、foreachにいる間にそれを削除するためにコピーを作成しようとするか、forの反復と制御を作成してくださいde 要素数が正しく、out 状態です。

またね

于 2011-04-15T10:32:38.633 に答える