Pero si quiero contatenar 2 cuerdas, entonces supongo que es mejor (más rápido) para hacer sin StringBuilder. ¿Es esto correcto?
Eso es de hecho correcta, se puede encontrar por qué se explica precisamente muy bien en:
http://www.yoda.arachsys.com/csharp/stringbuilder.html
resumió: si se puede contatenar cuerdas de una sola vez como
var result = a + " " + b + " " + c + ..
se es mejor sin stringbuilder porque solo se hace una copia (la longitud de la cadena resultante se calcula de antemano);
Para structurs como
var result = a;
result += " ";
result += b;
result += " ";
result += c;
..
se crean nuevos objetos cada vez, por lo que no se debe considerar StringBuilder.
Al final del artículo se resume estas reglas generales:
reglas generales
lo tanto, cuando se debe utilizar StringBuilder, y cuándo se debe utilizar los operadores de concatenación de cadenas ?
Definitivamente el uso de StringBuilder cuando que estés concatenar en un bucle no trivial - especialmente si usted no sabe a ciencia cierta (en tiempo de compilación) el número de iteraciones que va a hacer a través de la lazo. Por ejemplo, leer un archivo de un carácter a la vez, construir una cadena sobre la marcha con el operador + = es potencialmente un suicidio de rendimiento.
Definitivamente el uso del operador de concatenación cuando se puede (legible) especificar todo lo que necesita para ser concatenan en un comunicado. (Si tiene una serie de cosas a concatenar, considere llamar String.Concat explícitamente -. o string.join si necesita un delimitador)
No tenga miedo de romper los literales hasta en varias bits concatenados: el resultado será el mismo. Puede ayudar a la legibilidad de rompiendo un literal largo en varias líneas, por ejemplo, con sin dañar el rendimiento.
Si necesita los resultados intermedios de la concatenación de algo aparte de la alimentación de la siguiente iteración de concatenación, StringBuilder no es va a ayudar. Por ejemplo, si crea un nombre completo a partir de un primer nombre y un apellido, y luego agrega un tercer elemento de información (el apodo ), el solo se beneficiará del uso de StringBuilder si no necesita la cadena (primer nombre + ) para otro propósito (como hacemos en el ejemplo que crea un objeto Person).
Si sólo tiene unas pocas concatenaciones que hacer, y que realmente quiere hacerlas en declaraciones separadas, no importa el camino que tomes. ¿Qué manera es más eficiente dependerá de el número de concatenaciones los tamaños de cuerda involucrados, y en qué orden que están concatenados. Si usted realmente cree que pieza de código a ser un cuello de botella de rendimiento , perfil o compararlo en ambos sentidos.
Creo que esto ha sido cubierto previamente. –
Muchas veces –
Probables duplicados: http://stackoverflow.com/questions/529999, http://stackoverflow.com/questions/550702, http://stackoverflow.com/questions/1612797, http: // stackoverflow. com/questions/21078, http://stackoverflow.com/questions/73883, –