Работа с коллекцией была изменена — операция перечисления может не выполняться
Итак, сегодня я столкнулся с распространенной проблемой, которая, вероятно, каждыйРазработчик .NET имел удовольствие испытать: пресловутая Коллекция была изменена; операция перечисления может не выполняться. По сути, это происходит из-за того, что вы не можете изменить коллекцию, через которую проходите.
После непродолжительного поиска я нашел здесь то, что я полагаю, является самым простым способом обойти эту проблему: просто вызовите метод ToArray/ToList/ToWhatever LINQ. Например, код ниже не будет работать:
List<string> goodProgrammingLanguages = GetGoodProgrammingLanguages();
foreach(var language in goodProgrammingLanguages)
{
if(language == "Java")
goodProgrammingLanguages.Remove(language);
}
Но этот будет работать нормально:
List<string> goodProgrammingLanguages = GetGoodProgrammingLanguages();
foreach(var language in goodProgrammingLanguages.ToArray())
{
if(language == "Java")
goodProgrammingLanguages.Remove(language);
}
Вот и все! Надеюсь, это поможет вам избежать долгих обходных путей.