Come concatenare più stringhe (C# guida)How to concatenate multiple strings (C# Guide)

La concatenazione è il processo di aggiunta di una stringa alla fine di un'altra stringa.Concatenation is the process of appending one string to the end of another string. Le stringhe vengono concatenate usando l'operatore +.You concatenate strings by using the + operator. Per i valori letterali e le costanti di stringa, la concatenazione viene eseguita in fase di compilazione; non viene eseguita alcuna concatenazione in fase di esecuzione.For string literals and string constants, concatenation occurs at compile time; no run-time concatenation occurs. Per le variabili di stringa, la concatenazione viene eseguita solo in fase di esecuzione.For string variables, concatenation occurs only at run time.

Nota

Gli esempi in C# in questo articolo vengono eseguiti nello strumento di esecuzione e playground per codice inline Try.NET.The C# examples in this article run in the Try.NET inline code runner and playground. Selezionare il pulsante Esegui per eseguire un esempio in una finestra interattiva.Select the Run button to run an example in an interactive window. Dopo aver eseguito il codice, è possibile modificarlo ed eseguire il codice modificato selezionando di nuovo Esegui.Once you execute the code, you can modify it and run the modified code by selecting Run again. Il codice modificato viene eseguito nella finestra interattiva o, se la compilazione non riesce, la finestra interattiva visualizza tutti i messaggi di errore del compilatore C#.The modified code either runs in the interactive window or, if compilation fails, the interactive window displays all C# compiler error messages.

L'esempio seguente usa la concatenazione per suddividere un valore letterale di stringa lungo in stringhe più piccole per migliorare la leggibilità nel codice sorgente.The following example uses concatenation to split a long string literal into smaller strings in order to improve readability in the source code. Queste parti sono concatenate in una singola stringa in fase di compilazione.These parts are concatenated into a single string at compile time. Non c'è alcun impatto sulle prestazioni in fase di esecuzione, indipendentemente dal numero di stringhe coinvolte.There is no run-time performance cost regardless of the number of strings involved.

// Concatenation of literals is performed at compile time, not run time.
string text = "Historically, the world of data and the world of objects " +
"have not been well integrated. Programmers work in C# or Visual Basic " +
"and also in SQL or XQuery. On the one side are concepts such as classes, " +
"objects, fields, inheritance, and .NET Framework APIs. On the other side " +
"are tables, columns, rows, nodes, and separate languages for dealing with " +
"them. Data types often require translation between the two worlds; there are " +
"different standard functions. Because the object world has no notion of query, a " +
"query can only be represented as a string without compile-time type checking or " +
"IntelliSense support in the IDE. Transferring data from SQL tables or XML trees to " +
"objects in memory is often tedious and error-prone.";

System.Console.WriteLine(text);

Per concatenare le variabili di stringa, è possibile usare gli operatori + o +=, l'interpolazione di stringa oppure i metodi String.Format, String.Concat, String.Join o StringBuilder.Append.To concatenate string variables, you can use the + or += operators, string interpolation or the String.Format, String.Concat, String.Join or StringBuilder.Append methods. L'operatore + è facile da usare e rende il codice intuitivo.The + operator is easy to use and makes for intuitive code. Anche se si usano diversi operatori + in un'unica istruzione, il contenuto della stringa viene copiato una sola volta.Even if you use several + operators in one statement, the string content is copied only once. Il codice seguente mostra esempi dell'uso degli operatori + e += per concatenare le stringhe:The following code shows examples of using the + and += operators to concatenate strings:

string userName = "<Type your name here>";
string dateString = DateTime.Today.ToShortDateString();

// Use the + and += operators for one-time concatenations.
string str = "Hello " + userName + ". Today is " + dateString + ".";
System.Console.WriteLine(str);

str += " How are you today?";
System.Console.WriteLine(str);

In alcune espressioni risulta più semplice concatenare le stringhe usando l'interpolazione di stringhe, come illustrato nel codice seguente:In some expressions, it's easier to concatenate strings using string interpolation, as the following code shows:

string userName = "<Type your name here>";
string date = DateTime.Today.ToShortDateString();

// Use string interpolation to concatenate strings.
string str = $"Hello {userName}. Today is {date}.";
System.Console.WriteLine(str);

str = $"{str} How are you today?";
System.Console.WriteLine(str);

Nota

Nelle operazioni di concatenazione di stringhe il compilatore C# tratta una stringa Null come se fosse una stringa vuota.In string concatenation operations, the C# compiler treats a null string the same as an empty string.

Un altro metodo per concatenare le stringhe è String.Format.Other method to concatenate strings is String.Format. Questo metodo è utile quando si compila una stringa da un numero ridotto di stringhe dei componenti.This method works well when you are building a string from a small number of component strings.

In altri casi è possibile combinare le stringhe in un ciclo, se non si conosce il numero di stringhe di origine da combinare e il numero effettivo di stringhe di origine potrebbe essere elevato.In other cases you may be combining strings in a loop, where you don't know how many source strings you are combining, and the actual number of source strings may be quite large. La classe StringBuilder è stata progettata per questi scenari.The StringBuilder class was designed for these scenarios. Il codice seguente usa il metodo Append della classe StringBuilder per concatenare le stringhe.The following code uses the Append method of the StringBuilder class to concatenate strings.

// Use StringBuilder for concatenation in tight loops.
var sb = new System.Text.StringBuilder();
for (int i = 0; i < 20; i++)
{
    sb.AppendLine(i.ToString());
}
System.Console.WriteLine(sb.ToString());

Per altre informazioni sui motivi per scegliere la concatenazione di stringhe o la classe StringBuilder, vedere.You can read more about the reasons to choose string concatenation or the StringBuilder class.

Un'altra opzione per unire le stringhe di una raccolta consiste nell'usare il metodo String.Concat.Another option to join strings from a collection is to use String.Concat method. Usare il metodo String.Join se le stringhe di origine devono essere separate da un delimitatore.Use String.Join method if source strings should be separated by a delimeter. Il codice seguente combina una matrice di parole con entrambi i metodi:The following code combines an array of words using both methods:

string[] words = { "The", "quick", "brown", "fox", "jumps", "over", "the", "lazy", "dog." };

var unreadablePhrase = string.Concat(words);
System.Console.WriteLine(unreadablePhrase);

var readablePhrase = string.Join(" ", words);
System.Console.WriteLine(readablePhrase);

Infine, è possibile usare LINQ e il metodo Enumerable.Aggregate per unire le stringhe di una raccolta.At last, you can use LINQ and the Enumerable.Aggregate method to join strings from a collection. Questo metodo combina le stringhe di origine usando un'espressione lambda.This method combines the source strings using a lambda expression. L'espressione lambda esegue le operazioni necessarie per aggiungere ogni stringa all'accumulo esistente.The lambda expression does the work to add each string to the existing accumulation. L'esempio seguente combina una matrice di parole aggiungendo uno spazio tra ogni parola nella matrice:The following example combines an array of words by adding a space between each word in the array:

string[] words = { "The", "quick", "brown", "fox", "jumps", "over", "the", "lazy", "dog." };

var phrase = words.Aggregate((partialPhrase, word) =>$"{partialPhrase} {word}");
System.Console.WriteLine(phrase);

È possibile provare questi esempi esaminando il codice nel repository GitHub.You can try these samples by looking at the code in our GitHub repository. Oppure è possibile scaricare gli esempi come file ZIP.Or you can download the samples as a zip file.

Vedere ancheSee also