Usando Delegate em List

19 de outubro de 2011   |   by administrador

Tive uma ideia onde dentro de uma lista, eu gostaria de remover um item sem precisar percorre-la verificando qual item é o o item certo que quero remover.

Exemplo:
Se tentarmos remover um item de uma lista enquanto estivermos iterando sobre a mesma, utilizando o foreach, uma exceção será lançada, por exemplo:

private List<string> lista;

lista = new List<string>();

lista.Add(“maria”);

lista.Add(“joão”);

lista.Add(“ZaN”);

foreach (string s in lista)

lista.Remove(s);

O código acima , lançara uma exceção, pois não se pode remover um item enquanto estamos percorrendo o mesmo.
uma alternativa seria usar um método da própia lista o “Foreach”.

private List<string> lista;

lista = new List<string>();

lista.Add(“maria”);

lista.Add(“joão”);

lista.Add(“ZaN”);

lista.ForEach(Action);
}

private void Action(string s)
{
if (s.Equals(“ZaN”))lista.Remove(s);
}

Podemos melhoras as coisas utilizando um delegate para remover o item escolhido. obs: em uma linha .. resolvemos isso.

lista.ForEach(delegate(string s) { if (s.Equals(“ZaN”)) ls.Remove(s); });

claro que existem outras formas de se trabalhar com delegate, mas eu apenas estou mostrando um exemplo de onde podemos usar.

até o proximo post!

Tags: ,