La concatenazione di stringhe è una delle operazioni più frequenti nello sviluppo. In C# esistono numerosi modi per concatenare stringhe, vediamone qualcuno.
Operatori +
e +=
Questi operatori permettono di concatenare in modo chiaro due stringhe, anche se spesso l’interpolazione risulta ancora più leggibile.
var foo = "foo";
var bar = "bar";
var output = "Ciao " + foo + ", mi chiamo" + bar + ".";
Interpolazione
L’intepolazione permette di ottenere lo stesso risultato della concatenazione ma il codice risulta molto più chiaro e parlante.
var foo = "foo";
var bar = "bar";
var str = $"Ciao {foo}, mi chiamo {bar}.";
String.Format
Questo metodo permette di esplicitare le variabili che voglio inserire nella stringa. Può essere utile per gestire il multilingua.
var foo = "foo";
Console.WriteLine(String.Format("Ciao, mi chiamo {0}.", foo );
StringBuilder
Lo StringBuilder viene utilizzato quando voglio costruire una stringa complessa che prevede tanti passaggi (tipicamente per mezzo di un for). In caso di applicazioni molto veloci questo metodo è da preferire.
var sb = new System.Text.StringBuilder();
for (int i = 0; i < 20; i++)
sb.AppendLine(i.ToString());
System.Console.WriteLine(sb.ToString());
String.Join
Questo utilissimo metodo permette di ottenere una stringa unica a partire da una lista. I vari elementi della lista vengono uniti da un separatore impostato come primo parametro dello string.Join
.
string[] parole= { "pane", "pasta", "pizza" };
var lista = string.Join(" ", parole);
System.Console.WriteLine(lista );
Aggregate
Il seguente metodo lo scrivo per completezza ma, dato che internamente non utilizza StringBuilder
, ha prestazioni orribili.
string[] words = { "foo", "bar", "fooBar" };
var res = words.Aggregate("", (current, next) => current + ", " + next);
Console.WriteLine(res);
E ora… quale utilizzare?
Come abbiamo visto esistono vari modi per concatenare stringhe in C#, da questo interessante post otteniamo le seguenti regole:
- Quando voglio concatenare 4 o meno stringhe conviene utilizzare la concatenzione tradizionale
- Quando voglio concatenare più di 5 stringhe conviene
StringBuilder
- Quando voglio concatenare una stringa molto grande formata da varie frasi conviene utilizzare o il carattere
@
prima della stringa o il+
inline. - Quando utilizzi lo StringBuilder indica la capacità iniziale il più vicino possibile alla dimensione finale della stringa.
Approfondimento
Per approfondire le stringhe in C# rimando al mio articolo Le stringhe in C#. Per imparare tutti i trucchi del C# rimando al libro Programmare con C# 10. Guida completa di Antonio Pelleriti.