--年--月--日 --:--

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Collection was modified; enumeration operation may not execute

2009年01月07日 04:28

C#でプログラミングしていたとき。

Collection was modified; enumeration operation may not execute


というエラーが出ました。
List<>(ArrayListでも?)のforeachループ時に削除するといけないらしいです。

なので、
・削除したいループで、「削除用List」にAddする
・削除用Listのforeachループで、先ほどのArrayListの要素をRemoveする
というステップを踏みます。
以下コード。



List<T> mainList = new List(); //T:型。MainListは削除したい任意(もともと)のリストです
List<T> listToDelete = new List(); //何度も呼び出す場合、こちらは関数内で宣言すると良いと思います。

foreach(T value in mainList)//雑多なループ。削除はここでは行なわない。valueは任意の変数名
{
listToDelete.Add(value);
}

foreach(T value in listToDelete)//削除用ループ
{
mainList.Remove(value);
}


からくりとしては、
mainListで消したいものがあれば、ある回数だけlistToDeleteに要素が足されていく
→listToDeleteでは、消したい回数だけ、消されるべきものが削除される
といった形で。


この記事はCollection was modified; enumeration operation may not execute « Silicon Dreamsを参考にしています。Muchas Gracias。
スポンサーサイト


コメント

    コメントの投稿

    (コメント編集・削除に必要)
    (管理者にだけ表示を許可する)

    トラックバック

    この記事のトラックバックURL
    http://suiseidreaming.blog45.fc2.com/tb.php/191-f8ad7719
    この記事へのトラックバック


    最近の記事


    上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。