- El compilador optimizará tanto concat de cadena como sea posible, por lo que las cadenas que se acaban de romper para el corte de línea generalmente se pueden optimizar en una sola cadena literal.
- concatenación con variables conseguirá compilado en String.Concat
- StringBuilder puede ser mucho más rápido si está haciendo varias (más de 10 o menos supongo) "modificaciones" en una cadena pero tiene cierta sobrecarga adicional porque asigna más espacio de lo que necesita en su búfer y cambia el tamaño de su búfer interno cuando lo necesita.
Yo personalmente uso String.Format casi todo el tiempo por dos razones:
- Es mucho más fácil mantener la cadena de formato de reordenación de un montón de variables.
- String.Format toma un IFormatProvider que se pasa a cualquier tipo IFormattable incrustado en la cadena (como numéricos) para que obtenga el formato numérico apropiado para la cultura especificada y en general solo más control sobre cómo se formatean los valores.
Por ejemplo, ya que algunas culturas utilizan una coma como separador decimal que se desea asegurar, ya sea con o StringBuilder String.Format que especifique CultureInfo.InvariantCulture si quisiera asegurarse de que los números se formatean la forma en que la intención .
Dos más que hay que destacar ...
- StringBuilder también tiene una función AppendFormat que le da la flexibilidad de String.Format sin necesidad de un segundo tampón innecesaria.
- Al utilizar StringBuilder, asegúrese de no anular el propósito mediante la concatenación de los parámetros que pasa a Anexar. Es fácil perderse.
@Shimmy: Mira este http://stackoverflow.com/questions/6785/is-string-format-as-efficient-as-stringbuilder – shahkalpesh
http: //blogs.msdn.com/b/ricom/archive/2004/03/12/performance-quiz-1-of-a-series.aspx – Freelancer
http://www.codinghorror.com/blog/archives/001218.html – Freelancer