Para remover um item de uma colecção, nada mais do que

List<string> s = new List<string>() { “1″, “2″ };
s.Remove(“1″);

Mas quando usamos a colecção dentro de um ciclo e queremos remover o item que está carregado actualmente, podemos ser surpreendidos com uma excepção do tipo “Collection was modified; enumeration operation may not execute”.

List<string> s = new List<string>() { “1″, “2″ };
foreach (string ss in s)
{
s.Remove(ss);
}

Para contornar este erro, e eliminar todos os items que pretendemos durante o ciclo, basta a seguinte alteração ao código

List<string> s = new List<string>() { “1″, “2″ };
foreach (string ss in new List<string>(s))
{
s.Remove(ss);
}



One Response to “Collection was modified; enumeration operation may not execute”  

  1. Bem visto.


Leave a Reply