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!