Работа с коллекцией была изменена — операция перечисления может не выполняться

Коллекция

Итак, сегодня я столкнулся с распространенной проблемой, которая, вероятно, каждыйРазработчик .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);
}

Вот и все! Надеюсь, это поможет вам избежать долгих обходных путей.

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *