El segundo es el mejor enfoque. Las cadenas son inmutables, lo que significa que cuando utiliza sb.Append ("Hola" + "Cómo" + "Son" + "Usted") está creando copias múltiples de la cadena
p.
"Hello"
continuación
"HelloHow"
continuación
"HelloHowAre"
etc.
La segunda pieza de código es mucho más performante
edición: Por supuesto, esto no lo hace tomar en consideración Mejoras en el compilador de eración, pero es mejor usar la clase como se pretendía
Ok, como la gente ha señalado ya que estos son literales, el compilador se encarga de optimizar estas operaciones, pero mi punto es que la concatenación de cadenas es algo que StringBuilder intenta para evitar
Por ejemplo, un bucle varias veces como tal:
var someString = "";
foreach (var s in someListOfStrings)
{
someString += s;
}
no es tan bueno como hacerlo:
var sb = new StringBuilder();
foreach(var s in someListOfStrings)
{
sb.Append(s);
}
sb.ToString();
Como esto probablemente será mucho más rápido, ya que, como he dicho antes, las cadenas son inmutables
asumí el PO estaba hablando acerca del uso de la concatenación en general desde
sb.Append("Hello" + "How");
parece completamente inútil cuando
sb.Append("HelloHow");
¿Sería más lógico ...?
Me parece que en la mente PO, el texto del marcador de posición con el tiempo se convertiría en una de las variables shedload ...
Consulte http://stackoverflow.com/questions/9132338/how-many-string-objects-will-be-created-when-using-a-plus-sign/9132374#9132374. Esto ha sido cubierto * a muerte * :-) –
Puede encontrar [este análisis] (http://www.dotnetperls.com/stringbuilder-performance) interesante – Steve
Mi pregunta es: ¿por qué querría hacer "Hola" + "Cómo", etc., cuando "HelloHow" estaría bien? ¿Cuál es el verdadero punto de la pregunta porque mi respuesta fue criticada por razones técnicas que no creo que sea el punto aquí? – Charleh