Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Tip
Questo articolo fa parte della sezione Nozioni fondamentali per gli sviluppatori che già conoscono almeno un linguaggio di programmazione e stanno imparando C#. Se non si ha familiarità con la programmazione, iniziare prima con le esercitazioni introduttive .
Venire da un'altra lingua? La concatenazione in C# con + è analoga a quella di Java e JavaScript. C# aggiunge l'interpolazione di stringhe ($"{x}"), simile ai template literal di JavaScript e alle f-string di Python, come metodo preferito per creare stringhe a partire da variabili. Per costruire stringhe in un ciclo, C# offre StringBuilder, proprio come StringBuilder di Java.
La concatenazione aggiunge una stringa alla fine di un'altra per produrre una nuova stringa. C# offre diversi modi per concatenare stringhe e la scelta migliore dipende dal fatto che tu debba unire un insieme fisso di valori o una raccolta, oppure costruire una stringa pezzo per pezzo in un ciclo.
Concatenare valori letterali stringa
Quando si concatenano valori letterali stringa o costanti con +, il compilatore li unisce in fase di compilazione. Suddividere un letterale lungo su più righe migliora la leggibilità nel codice sorgente senza alcun costo in fase di esecuzione:
// The compiler joins adjacent string literals at compile time,
// so splitting a long literal across lines has no run-time cost.
string message =
"This is the first sentence of a longer message. " +
"This is the second sentence. " +
"This is the third and final sentence.";
Console.WriteLine(message);
// => This is the first sentence of a longer message. This is the second sentence. This is the third and final sentence.
Usare gli + operatori e +=
Per combinare le variabili stringa, usare l'operatore + per produrre una nuova stringa o += per accodarsi a una stringa esistente. L'operatore + è intuitivo e il compilatore copia il contenuto della stringa una sola volta anche quando si concatenano più operatori in una singola espressione:
string name = "Alex";
string day = "Monday";
// Use + to build a string from variables and literals.
string greeting = "Hello " + name + ". Today is " + day + ".";
Console.WriteLine(greeting);
// => Hello Alex. Today is Monday.
// Use += to append to an existing string.
greeting += " How are you today?";
Console.WriteLine(greeting);
// => Hello Alex. Today is Monday. How are you today?
Note
Nella concatenazione di stringhe, C# considera una null stringa uguale a una stringa vuota, quindi la concatenazione null non aggiunge alcun elemento al risultato.
Usare l'interpolazione di stringhe
Per incorporare espressioni calcolate in una stringa, preferire l'interpolazione di stringhe rispetto ai segnaposto posizionali come i {0} token e {1} che String.Format ereditano dalla formattazione in stile C. L'interpolazione inserisce ogni espressione direttamente nel punto in cui compare il suo valore, così la stringa risultante resta leggibile e non si può associare un argomento alla posizione sbagliata:
string name = "Alex";
string day = "Monday";
// String interpolation reads better than a chain of + operators.
string greeting = $"Hello {name}. Today is {day}.";
Console.WriteLine(greeting);
// => Hello Alex. Today is Monday.
Quando ogni espressione interpolata è una stringa costante, è possibile assegnare il risultato interpolato a una const stringa.
Unire una raccolta di stringhe
Per combinare gli elementi di una raccolta, usare String.Concat per unirli senza separatori o String.Join per posizionare un separatore tra ogni elemento:
string[] words = ["The", "quick", "brown", "fox"];
// Concat joins the sequence with no separator.
string runTogether = string.Concat(words);
Console.WriteLine(runTogether);
// => Thequickbrownfox
// Join places a separator between each element.
string sentence = string.Join(' ', words);
Console.WriteLine(sentence);
// => The quick brown fox
string.Join è lo strumento giusto ogni volta che è necessario un output delimitato, ad esempio valori delimitati da virgole o parole separate da spazi.
Compilare una stringa in un ciclo
Ogni + operazione o += crea una nuova stringa, perché le stringhe non sono modificabili. Quando si accodano molti frammenti in un ciclo, quell'allocazione si accumula. La StringBuilder classe compila invece il risultato in un singolo buffer:
// StringBuilder builds a string in place, which suits loops
// that append many pieces.
var builder = new StringBuilder();
for (int i = 1; i <= 3; i++)
{
builder.AppendLine($"Line {i}");
}
Console.Write(builder.ToString());
// => Line 1
// => Line 2
// => Line 3
Usa StringBuilder quando il numero di elementi è elevato o non è noto in fase di compilazione. Per un set fisso e ridotto di valori, l'operatore e l'interpolazione + di stringhe sono più chiari. Per indicazioni su quando ogni approccio offre prestazioni ottimali, vedere Tipi string e StringBuilder.