ループ中に参照元のデータを変えるな!(←なぜ?)
foreach文は「ループ中に参照元のList(またはDictionary)に変更を加えるとエラーになる」仕様らしく、
InvalidOperationException: Collection was modified; enumeration operation may not execute.
無効な操作の例外:コレクションが変更されたため、列挙操作を実行できません。
無効な操作の例外:コレクションが変更されたため、列挙操作を実行できません。
というエラーが発生します。…なにこの仕様??
解決するために色々調べていたのですが、ちょっとコードが解りにくくなるので、単純に
A.ループ中に参照元データに変更を加えない
または
B.ループ中に参照元データに変更を加えたければ、【参照元データのコピー】に変更を加えて、ループ後に参照元データに変更結果を反映させる
という方法が良さそうです。
Bの例はこんな感じ。