[UNITY]2DRPG開発日誌 #47 foreachのエラー対処法「InvalidOperationException: Collection was modified; enumeration operation may not execute.」

ループ中に参照元のデータを変えるな!(←なぜ?)

foreach文は「ループ中に参照元のList(またはDictionary)に変更を加えるとエラーになる」仕様らしく、

InvalidOperationException: Collection was modified; enumeration operation may not execute.
無効な操作の例外:コレクションが変更されたため、列挙操作を実行できません。

というエラーが発生します。…なにこの仕様??

解決するために色々調べていたのですが、ちょっとコードが解りにくくなるので、単純に

A.ループ中に参照元データに変更を加えない

または

B.ループ中に参照元データに変更を加えたければ、【参照元データのコピー】に変更を加えて、ループ後に参照元データに変更結果を反映させる

という方法が良さそうです。

Bの例はこんな感じ。