Funzionalità interessante. Voglio solo sottolineare l'enfasi sul perché questo è meglio di string.format se non è evidente ad alcune persone.
Ho letto qualcuno dire ordine string.format a "{0} {1} {2}" per abbinare i parametri. Non sei obbligato a ordinare "{0} {1} {2}" in string.format, puoi anche fare "{2} {0} {1}". Tuttavia, se hai molti parametri, come 20, vuoi davvero sequenziare la stringa su "{0} {1} {2} ... {19}". Se si tratta di un pasticcio mischiato, sarà difficile allineare i parametri.
Con $, puoi aggiungere parametri in linea senza contare i tuoi parametri. Questo rende il codice molto più facile da leggere e gestire.
Il rovescio della medaglia di $ è, non è possibile ripetere facilmente il parametro nella stringa, è necessario digitarlo. Ad esempio, se sei stanco di digitare System.Environment.NewLine, puoi fare string.format ("... {0} ... {0} ... {0}", System.Environment.NewLine), ma, in $, devi ripeterlo. Non puoi fare $ "{0}" e passarlo a string.format perché $ "{0}" restituisce "0".
Nella nota a margine, ho letto un commento in un altro tpoic duplicato. Non ho potuto commentare, quindi eccolo qui. Lui ha detto che
string msg = n + " sheep, " + m + " chickens";
crea più di un oggetto stringa. Questo non è vero in realtà. Se lo fai in una sola riga, crea solo una stringa e viene inserita nella cache delle stringhe.
1) string + string + string + string;
2) string.format()
3) stringBuilder.ToString()
4) $""
Tutti restituiscono una stringa e creano solo un valore nella cache.
D'altro canto:
string+= string2;
string+= string2;
string+= string2;
string+= string2;
Crea 4 valori diversi nella cache perché ci sono 4 ";".
Pertanto, sarà più facile scrivere codice come il seguente, ma creeresti cinque stringhe interpolate quando Carlos Muñoz correggesse:
string msg = $"Hello this is {myName}, " +
$"My phone number {myPhone}, " +
$"My email {myEmail}, " +
$"My address {myAddress}, and " +
$"My preference {myPreference}.";
Questo crea una singola stringa nella cache mentre hai un codice molto facile da leggere. Non sono sicuro delle prestazioni, ma sono sicuro che MS lo ottimizzerà se non lo fa già.