List.ConvertAll


Estive olhando os Generics e seus métodos, e teve um deles que me chamou a atenção. O método que me refiro é o List.ConvertAll<T>, que pelo que pude ver, ele retorna uma nova lista, podendo inclusive ser de um outro tipo. Este método por sua vez, recebe em seu parametro um delegate que será responsável por fazer as devidas conversões.

Como estamos utilizando C#, podemos ao invés de criar um delegate e um método auxiliar para esta conversão, criarmos um método anonimo, que além de mais elegante, escreve-se menos código. Eis aqui um exemplo simples da utilização deste método:

     List<Usuario> usuarios = new List<Usuario>();
     usuarios.Add(new Usuario(“Nome Usuario 1”));
     usuarios.Add(new Usuario(“Nome Usuario 2”));
     usuarios.Add(new Usuario(“Nome Usuario 3”));

     List<string> nomes = usuarios.ConvertAll<string>(delegate(Usuario u)
     {
          return u.Nome;
     });

     foreach(string s in nomes){
          Console.WriteLine(s);
     }

Como vemos, através do método ConvertAll, específicamos o tipo que será retornado e através do método anonimo, que recebe um objeto do tipo Usuario e através deste, recupera o valor da propriedade Nome para que a mesma seja adicionada na lista de strings denominada “nomes”.

Eu comecei a fazer os testes em um projeto em VB.NET, mas infelizmente, o mesmo não tem suporte à métodos anonimos, obrigando-nos a criar o Delegate e também um método auxiliar para que o mesmo retorne o valor a ser recuperado e armazenado nesta nova listagem.

Anúncios

2 comentários sobre “List.ConvertAll

  1. Boas Eduardo,

    Sim, o código acima está utilizando método anônimo. Internamente o que ele faz é percorrer a List<T>, executando o código que você define para cada um dos elementos.

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s