Esercizio - Combinare stringhe usando l'interpolazione di stringhe
Per quanto la concatenazione di stringhe sia semplice e pratica, la popolarità dell'interpolazione di stringhe sta aumentando in situazioni in cui è necessario combinare molte variabili e stringhe letterali in un unico messaggio formattato.
Che cos'è l'interpolazione di stringhe?
L'interpolazione di stringhe combina più valori in una singola stringa letterale usando un "modello" e una o più espressioni di interpolazione. Un'espressione di interpolazione indicata dal simbolo di parentesi graffa di apertura e chiusura { }
. All'interno delle parentesi graffe è possibile inserire qualsiasi espressione C# che restituisce un valore. La stringa letterale diventa un modello quando è preceduta dal carattere $
.
In altre parole, invece di scrivere la riga di codice seguente:
string message = greeting + " " + firstName + "!";
È possibile scrivere questa riga di codice più concisa:
string message = $"{greeting} {firstName}!";
In questo semplice esempio si risparmiano solo pochi caratteri. Ma si può immaginare quanto più concisa possa essere l'interpolazione di stringhe in operazioni più complesse. Inoltre, per molti utenti la sintassi di interpolazione di stringhe è più semplice e facile da leggere.
Nell'esercizio seguente si riscriveranno i messaggi precedenti usando l'interpolazione di stringhe.
Usare l'interpolazione di stringhe per combinare una stringa letterale e un valore di variabile
Per interpolare due stringhe, si crea una stringa letterale usando come prefisso della stringa il simbolo $
. La stringa letterale deve contenere almeno un set di parentesi graffe {}
contenenti il nome di una variabile.
Selezionare tutto il codice nell'editor .NET e quindi premere Canc o BACKSPACE per eliminarlo.
Immettere il codice seguente nell'editor .NET:
string firstName = "Bob"; string message = $"Hello {firstName}!"; Console.WriteLine(message);
A questo punto, eseguire il codice. Nella console di output verrà visualizzato il risultato seguente:
Hello Bob!
Usare l'interpolazione di stringhe con più variabili e stringhe letterali
È possibile eseguire diverse operazioni di interpolazione nella stessa riga di codice.
Modificare il codice scritto in precedenza nel modo seguente:
int version = 11; string updateText = "Update to Windows"; string message = $"{updateText} {version}"; Console.WriteLine(message);
A questo punto, eseguire il codice. Nella console di output verrà visualizzato il risultato seguente:
Update to Windows 11
Evitare variabili intermedie
Come nell'esercizio precedente, è possibile eliminare la variabile temporanea per archiviare il messaggio.
Modificare il codice scritto in precedenza nel modo seguente:
int version = 11; string updateText = "Update to Windows"; Console.WriteLine($"{updateText} {version}!");
A questo punto, eseguire il codice. Il risultato nella console di output deve essere lo stesso anche se è stato semplificato il codice:
Update to Windows 11!
Combinare valori letterali verbatim e interpolazione di stringhe
Si supponga di dover usare un valore letterale verbatim nel modello. È possibile usare sia il simbolo di prefisso del valore letterale verbatim @
che quello di interpolazione di stringhe $
contemporaneamente.
Eliminare il codice dai passaggi precedenti e digitare il codice seguente nell'editor .NET:
string projectName = "First-Project"; Console.WriteLine($@"C:\Output\{projectName}\Data");
A questo punto, eseguire il codice. Dovrebbe essere visualizzato il risultato seguente.
C:\Output\First-Project\Data
In questo esempio, il simbolo
$
consente di fare riferimento alla variabileprojectName
tra parentesi quadre, mentre il simbolo@
consente di usare il carattere\
non di escape.
Riepilogo
Ecco quanto appreso finora sull'interpolazione di stringhe:
- L'interpolazione di stringhe costituisce un miglioramento rispetto alla concatenazione di stringhe grazie alla riduzione del numero di caratteri richiesti in alcune situazioni.
- È possibile combinare l'interpolazione di stringhe e i valori letterali verbatim combinando i simboli per ognuno di essi e usandoli come prefisso per il modello di stringa.