Pergunta

Qual é a diferença entre a AddRange e Concat funções em um genérico Lista? É um recomendado sobre o outro?

Foi útil?

Solução

Eles têm totalmente diferentes semântica.

AddRange modifica a lista adicionando os outros itens a ele.

Concat retorna uma nova sequência que contém a lista e os outros itens, sem modificar a lista.

Escolha uma questão que tem a semântica que você deseja.

Outras dicas

A grande diferença é que sofre mutações AddRange essa lista contra o qual ele é chamado enquanto Concat cria uma nova lista. Portanto, eles têm usos diferentes.

Além disso Concat é um método de extensão que se aplica a qualquer IEnumerable e retorna um IEnumerable você precisa de um .ToList () para resultar em uma nova lista.

Se você deseja estender o conteúdo de um AddRange lista utilização existente.

Se você estiver criando uma nova lista de duas fontes IEnumerable então usar Concat com .ToList. Isto tem a qualidade que ele não sofra mutação de qualquer uma das fontes.

Se você só precisa enumerar o conteúdo de duas listas (ou qualquer outro IEnumerable) então simplesmente use Concat cada vez, isto tem a vantagem de não realmente alocar nova memória para armazenar a lista unificada.

Eu encontrei este artigo interessante falar sobre a diferença entre estes 2 estruturas e comparar o seu desempenho ...

A idéia principal é que AddRange é maneira muito mais rápida quando seu sobre coleções de grande porte.

Aqui está a Fazer a ligação

Espero que isso ajude,

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top