Поговорим про изменение коллекции во время итераций без возможных ошибок
В C# есть распространенная ловушка, связанная с изменением коллекций во время их обхода с использованием
Давайте разберемся, как избежать этой ошибки:
Чтобы безопасно изменять коллекцию во время итерации, используйте метод
Еще одно решение — использовать цикл
Жми 🔥 если понравился пост и делись своим мнением в комментариях!
➡️ C# Ready | #практика
В C# есть распространенная ловушка, связанная с изменением коллекций во время их обхода с использованием
foreach
. Эта ошибка может привести к исключению InvalidOperationException
Давайте разберемся, как избежать этой ошибки:
List<int> list = new List<int> { 1, 2, 3 };
foreach (var number in list){
if (number == 2){
list.Remove(number); // Ошибка: InvalidOperationException
}
}
Чтобы безопасно изменять коллекцию во время итерации, используйте метод
RemoveAll
, который позволяет работать с коллекцией без изменения её структуры во время обхода:List<int> list = new List<int> { 1, 2, 3 };
list.RemoveAll(x => x == 2); // Правильный способ
Еще одно решение — использовать цикл
for
вместо foreach
. В этом случае можно контролировать индексы и безопасно изменять коллекцию:List<int> list = new List<int> { 1, 2, 3 };
for (int i = 0; i < list.Count; i++){
if (list[i] == 2){
list.RemoveAt(i); // Удаление элемента по индексу
i--; // Уменьшаем индекс после удаления
}
}
Жми 🔥 если понравился пост и делись своим мнением в комментариях!