Was ist der effizienteste Weg, um Zeichenfolgen zu verketten?
StringBuilder
Anwendungsfällen finden Sie hier .
String.Format
bei Steroiden. Welche, Leistung klug, ist ein winzig bisschen langsamer an einem Liner als +
und String.Concat
, aber viel besser als die, wenn auch langsamer als StringBuilder
bei mehreren Anrufen. In der Praxis sind die Leistungsunterschiede so groß, dass ich, wenn ich nur einen Weg zum Verketten wählen müsste, String-Interpolationen mit $
... Wenn zwei Wege wählen würde , dann füge StringBuilder
sie meiner Toolbox hinzu. Mit diesen beiden Möglichkeiten sind Sie eingestellt.
String.Join
Antwort wird nicht +
gerecht und ist praktisch eine schlechte Methode, um Zeichenfolgen zu verketten, aber in Bezug auf die Leistung ist sie überraschend schnell. Die Antwort warum ist interessant. String.Concat
und String.Join
kann beide auf Arrays wirken, ist aber String.Join
tatsächlich schneller. Anscheinend String.Join
ist es ziemlich ausgefeilt und optimierter als String.Concat
, teilweise weil es ähnlich funktioniert, StringBuilder
indem es zuerst die Stringlänge berechnet und dann den String erstellt, der von diesem Wissen profitiert, indem es UnSafeCharBuffer verwendet.
String.Join
erfordert auch eine Reihe konstruieren , die Ressource ineffizient Recht scheint? ... Es stellte sich heraus , dass +
und String.Concat
Konstrukt - Arrays für ihre Bestandteile sowieso. Folglich ist das manuelle Erstellen und Zuführen eines Arrays String.Join
vergleichsweise schneller. Es StringBuilder
übertrifft jedoch String.Join
in nahezu jeder praktischen Hinsicht, während $
es bei langen Zeichenfolgen nur geringfügig langsamer und viel schneller ist. Ganz zu schweigen davon, dass die Verwendung umständlich und hässlich ist, String.Join
wenn Sie dies getan haben um vor Ort ein Array dafür zu erstellen.