2016-09-26 2 views
0

La concaténation dans de nombreux langages utilisant l'opérateur += crée une nouvelle instance de chaîne. Il est préférable d'utiliser un string[] que nous rejoignons à la fin.Chaîne de concaténation: + = opérateur par rapport au groupe de chaînes joint

en Javascript:

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

est plus efficace que:

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

En C#, L'opérateur += créer une nouvelle chaîne? Le StringBuilder est-il plus efficace qu'en utilisant un string[]?

+1

C'est le genre de question à laquelle il vaut mieux répondre avec des exemples et des repères du monde réel plutôt qu'avec un examen purement théorique. Pouvez-vous fournir des exemples que vous aimeriez voir comparés? – Louis

+2

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

+0

Voir [cette réponse] (http://stackoverflow.com/a/1532499/579895) – Pikoh

Répondre

1

En C#, l'opérateur + = crée-t-il une nouvelle chaîne?

String est immuable en C# et Java. Cela signifie que vous ne pouvez pas le modifier. Chaque méthode qui modifie une chaîne (+= exécute également une méthode) renvoie une nouvelle instance de string.

Est-ce que le StringBuilder est plus efficace qu'en utilisant .Join() sur un string[]?

StringBuilder est plus performant (qui sont des nanosecs par appel) que d'utiliser .Join sur un string[]. Donc, il fait "sence" quand vous le faites vraiment souvent dans une boucle ou quelque chose.

+4

La deuxième question utilise 'StringBuilder' en appelant' Join' sur un tableau de chaînes. –

+0

Merci pour cette explication. Modification de ma réponse – Dominik

+0

"StringBuilder est plus performant (c'est-à-dire quelques nanosecs par appel) que d'utiliser .Join sur une chaîne []" comment le savez-vous? –