107 votes

.NET Liste<T> Concat vs AddRange

Quelle est la différence entre le AddRange et Concat fonctions sur une Liste générique? Est celui qui est recommandé sur l'autre?

135voto

Greg Beech Points 55270

Ils ont totalement différente de la sémantique.

AddRange modifie la liste en ajoutant les autres éléments.

Concat renvoie une nouvelle séquence contenant la liste et les autres éléments, sans modification de la liste.

Choisissez celui qui a la sémantique que vous voulez.

41voto

AnthonyWJones Points 122520

La grande différence est que AddRange mutation de cette liste à l'encontre de laquelle il est appelé alors que Concat crée une nouvelle Liste. Par conséquent, ils ont chacun des utilisations différentes.

Aussi Concat est une extension de la méthode qui s'applique à toute IEnumerable et renvoie un IEnumerable vous avez besoin d'un .ToList() pour aboutir à une nouvelle Liste.

Si vous souhaitez étendre le contenu d'une liste d'AddRange.

Si vous créez une nouvelle liste de deux IEnumerable sources puis utilisez Concat .ToList. Ce qui a la qualité de ne pas muter soit de sources.

Si vous avez uniquement besoin d'énumérer le contenu de deux Listes (ou tout autre IEnumerable) puis il suffit d'utiliser Concat à chaque fois, cela a l'avantage de ne pas réellement de l'attribution de nouveaux de mémoire pour contenir la liste unifiée.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X