728x90
C#에서 Collection was modified: enumeration operation may not execute 이 에러는 컬렉션을 열거하고 있을 때, 컬렉션을 수정하려고 할 때 발생하는 에러입니다. 이 에러는 foreach 루프를 사용할 때 주로 발생하는데, foreach 루프를 사용하면 컬렉션의 요소를 읽기만 할 수 있습니다. 따라서 컬렉션을 수정하려고 하면, 이 에러가 발생합니다.
이 에러를 해결하는 방법
1. for 루프 사용
foreach 루프 대신 for 루프를 사용하면, 컬렉션을 수정할 수 있습니다.
List<int> numbers = new List<int>() { 1, 2, 3, 4, 5 };
for (int i = 0; i < numbers.Count; i++)
{
if (numbers[i] == 3)
{
numbers.RemoveAt(i);
}
}
2. 새로운 컬렉션 생성
컬렉션을 수정하기 전에, 새로운 컬렉션을 생성하고 수정 작업을 수행한 후, 기존 컬렉션을 새로 생성된 컬렉션으로 대체하는 방법입니다.
List<int> numbers = new List<int>() { 1, 2, 3, 4, 5 };
List<int> newNumbers = new List<int>();
foreach (int number in numbers)
{
if (number != 3)
{
newNumbers.Add(number);
}
}
numbers = newNumbers;
3. ToList() 사용
컬렉션을 ToList() 메서드를 사용하여 새로운 리스트로 복사한 후, 수정 작업을 수행하고 다시 기존 컬렉션으로 대체하는 방법입니다.
List<int> numbers = new List<int>() { 1, 2, 3, 4, 5 };
List<int> newNumbers = numbers.ToList();
foreach (int number in numbers)
{
if (number == 3)
{
newNumbers.Remove(number);
}
}
numbers = newNumbers;
결론
Collection was modified; enumeration operation may not execute 이 에러를 해결하는 방법은 다양하지만, 가장 적절한 방법은 상황에 따라 다릅니다. 따라서, 이 에러가 발생하면, 상황에 따라 적절한 방법을 선택하여 해결해야 합니다.
728x90
'C#' 카테고리의 다른 글
C# 추상 클래스란? (0) | 2023.04.19 |
---|---|
C# : LINQ (0) | 2023.04.18 |
C# 프로퍼티 (0) | 2023.04.16 |
C# 반복문 : while (0) | 2023.04.15 |
C# 비트연산 (0) | 2023.04.14 |