Concatenare stringhe in C#

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.

Indice

Share
Ultimi articoli

Codice Pragmatico

Contatti

Per informazioni, dubbi o consulenze non esitate a contattarmi.

Lascia un messaggio

Ricevi le ultime news

Iscrivi alla newsletter

Solo articoli interessanti, promesso ;)