2009.01.07 Collection was modified; enumeration operation may not execute
C#でプログラミングしていたとき。
というエラーが出ました。
List<>(ArrayListでも?)のforeachループ時に削除するといけないらしいです。
なので、
・削除したいループで、「削除用List」にAddする
・削除用Listのforeachループで、先ほどのArrayListの要素をRemoveする
というステップを踏みます。
以下コード。
からくりとしては、
mainListで消したいものがあれば、ある回数だけlistToDeleteに要素が足されていく
→listToDeleteでは、消したい回数だけ、消されるべきものが削除される
といった形で。
この記事はCollection was modified; enumeration operation may not execute « Silicon Dreamsを参考にしています。Muchas Gracias。
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。
COMMENT
COMMENT FORM
TRACKBACK
TB URL

