1. ホーム
  2. c#

[解決済み] コレクションが変更され、ArrayListで列挙操作が実行されないことがある [重複] 。

2023-07-12 04:45:50

質問

から項目を削除しようとしています。 ArrayList から項目を削除しようとしているのですが、このような Exception が発生します。

Collection was modified; enumeration operation may not execute.

何かアイデアはありますか?

どのように解決するのですか?

の間にアイテムを削除しています。 foreach は、はい?単純に、できません。ここでは、いくつかの一般的なオプションがあります。

  • 使用 List<T> そして RemoveAll という述語を持つ
  • インデックスで後方に反復し、一致する項目を削除します。

    for(int i = list.Count - 1; i >= 0; i--) {
        if({some test}) list.RemoveAt(i);
    }
    
    
  • 使用 foreach そして、一致する項目を2番目のリストに入れます。2番目のリストを列挙して、1番目のリストからそれらの項目を削除します (意味がわかるでしょうか)