Question

Quelle est la différence entre le AddRange et Concat fonctionne sur un générique Liste? L'un est-il recommandé plutôt que l'autre?

Était-ce utile?

La solution

Ils ont une sémantique totalement différente.

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

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

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

Autres conseils

La grande différence est que AddRange mute la liste contre laquelle il est appelé alors que Concat crée une nouvelle liste. Par conséquent, ils ont des utilisations différentes.

De plus, Concat est une méthode d'extension qui s'applique à tout IEnumerable et renvoie un IEnumerable dont vous avez besoin d'un .ToList () pour générer une nouvelle liste.

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

Si vous créez une nouvelle liste à partir de deux sources IEnumerable, utilisez Concat avec .ToList. Cela a la qualité de ne pas modifier les sources.

Si vous n'avez jamais besoin que d'énumérer le contenu de deux listes (ou de tout autre IEnumerable), utilisez simplement Concat à chaque fois, cela présente l'avantage de ne pas allouer réellement de nouvelle mémoire pour conserver la liste unifiée.

J'ai trouvé cet article intéressant parlant de la différence entre ces 2 structures et comparant leurs performances ...

L'idée principale est que AddRange est beaucoup plus rapide lorsqu'il s'agit de collections de grande taille.

Voici le Lien

J'espère que cela vous aidera,

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top