2016-09-26 1 views
0

Die Verkettung in vielen Sprachen mit dem Operator += erstellt eine neue String-Instanz. Es ist bevorzugt, eine string[] zu verwenden, die wir am Ende verbinden.String-Verkettung: + = Operator versus String-Array verbunden

In Javascript:

var myString = new Array("Hello"); 
myString.push(" "); 
myString.push("world !"); 
console.log(myString.join('')); 

ist effizienter, dass:

var myString = "Hello"; 
myString += " "; 
myString += "world !"; 
console.log(myString); 

In C#, hat die += Operator eine neue Zeichenfolge zu erstellen? Ist der StringBuilder effizienter als ein string[]?

+1

Dies ist die Art von Frage, die am besten mit realen Beispielen und Benchmarks beantwortet wird, anstatt rein theoretisch zu untersuchen. Können Sie Beispiele angeben, für die Sie einen Benchmark sehen möchten? – Louis

+2

Siehe http://jonskeet.uk/csharp/stringbuilder.html –

+0

Siehe [diese Antwort] (http://stackoverflow.com/a/1532499/579895) – Pikoh

Antwort

1

Erstellt in C# der Operator + = eine neue Zeichenfolge?

String ist unveränderbar in C# und Java. Das bedeutet, dass Sie es nicht ändern können. Jede Methode, die einen String modifiziert (+= führt auch eine Methode aus), gibt eine neue Instanz eines string zurück.

Ist die StringBuilder effizienter, als mit .Join() auf einem string[]?

StringBuilder ist performanter (die einige nanosecs pro Anruf) sind als die Verwendung von .Join auf einem string[]. So macht es "Sinn", wenn Sie das wirklich oft in einer Schleife oder so machen.

+4

Die zweite Frage verwendet 'StringBuilder' im Gegensatz zu' Join' für ein String-Array. –

+0

Danke für diese Erklärung. Bearbeiten meiner Antwort – Dominik

+0

"StringBuilder ist leistungsfähiger (das sind einige Nanosecs pro Aufruf) als mit .Join auf einer Zeichenfolge []" woher weißt du das? –