- compilatore di ottimizzare tanto concat stringa che può, così per esempio stringhe che sono appena rotto per scopi di interruzione di riga solito può essere ottimizzata in una singola stringa letterale.
- concatenazione con le variabili otterrà compilato in String.Concat
- StringBuilder può essere molto più veloce se si sta facendo diverse (più di 10 o giù di lì credo) "modifiche" in una stringa, ma porta un certo overhead in più perché alloca più spazio del necessario nel suo buffer e ridimensiona il suo buffer interno quando è necessario.
Io personalmente uso String.Format quasi tutto il tempo per due motivi:
- E 'molto più facile da mantenere la stringa di formato di riorganizzare un gruppo di variabili.
- String.Format accetta un IFormatProvider che viene passato a tutti i tipi IFormattable incorporati nella stringa (come i valori numerici) in modo da ottenere una formattazione numerica appropriata per la cultura specificata e, in generale, solo un maggiore controllo sul modo in cui i valori vengono formattati.
Per esempio, dal momento che alcune culture utilizzano una virgola come separatore decimale si vorrebbe per assicurare sia con StringBuilder o String.Format specificato CultureInfo.InvariantCulture se ci si vuole assicurare che i numeri sono stati formattati il modo in cui si intende .
Altri due cosa da notare ...
- StringBuilder ha anche una funzione AppendFormat che ti dà la flessibilità di String.Format senza richiedere un secondo tampone non necessaria.
- Quando si utilizza StringBuilder, assicurarsi di non annullare lo scopo concatenando i parametri passati ad Aggiungi. È facile da perdere.
@Shimmy: guarda questo 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