InvalidOperationException: Collection was modified; enumeration operation may not execute.

컬렉션을 반복하는 도중에 컬렉션의 요소를 추가하거나 제거할 때 발생하는 오류라고 한다.

 

해결방법으로는 다른 방법으로 컬렉션을 접근하거나

수정할 요소를 임시로 저장하는 방법이 있다.

 

그런데

 foreach (var item in Projectiles)
     Despawn(item);

이건 안되고

 

for(int i = 0; i< Projectiles.Count; ++i)
    Despawn(Projectiles[i]);

이건 된다.

 

foreach 문은 내부적으로 enumerator를 사용하는데, 이 enumerator가 컬렉션을 수정하는 동작을 감지한다고 한다.

따라서 foreach문을 돌리고 있는데 컬렉션을 수정하면 저 오류가 뜨는 것이다.