Frage

Was ist der Unterschied zwischen dem AddRange und Concat Funktionen auf einem generischen Liste? Ist eine über den anderen zu empfehlen?

War es hilfreich?

Lösung

Sie haben völlig unterschiedliche Semantik.

AddRange ändert die Liste der anderen Elemente zu ihm hinzufügen.

Concat gibt eine neue Sequenz, die die Liste und die anderen Elemente enthält, ohne die Liste zu ändern.

Wählen Sie je nachdem, welche die Semantik hat Sie wollen.

Andere Tipps

Der große Unterschied ist, dass AddRange diese Liste mutiert, gegen die sie genannt wird, während Concat eine neue Liste erstellt. Daher haben sie unterschiedliche Verwendungszwecke.

Auch Concat ist eine Erweiterung Methode, die auf jede IEnumerable gilt und gibt eine IEnumerable Sie ein .ToList () führt in einer neuen Liste benötigen.

Wenn Sie den Inhalt einer bestehenden Liste Verwendung AddRange erweitern möchten.

Wenn Sie eine neue Liste aus zwei IEnumerable Quellen erstellen, dann Concat mit .ToList verwenden. Dies hat die Qualität, die es auch nicht von Quellen nicht mutieren.

Wenn Sie immer nur den Inhalt von zwei Listen aufzählen müssen (oder jede andere IEnumerable) dann einfach Concat jedes Mal verwenden, dies hat den Vorteil, nicht wirklich neu Zuweisen von Speichern, die einheitliche Liste zu halten.

Ich habe diesen interessanten Artikel spricht über den Unterschied zwischen diesen zwei Strukturen und ihre Leistung zu vergleichen ...

Die Grundidee ist, dass AddRange Art und Weise viel schneller ist, wenn es geht um große Größe Sammlungen.

Hier ist der Link

Hope, das hilft,

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top