Fonction cool. Je veux juste souligner l'accent mis sur pourquoi c'est mieux que string.format s'il n'est pas évident pour certaines personnes.
J'ai lu quelqu'un disant order string.format à "{0} {1} {2}" pour faire correspondre les paramètres. Vous n'êtes pas obligé de commander "{0} {1} {2}" dans string.format, vous pouvez également faire "{2} {0} {1}". Cependant, si vous avez beaucoup de paramètres, comme 20, vous voulez vraiment séquencer la chaîne sur "{0} {1} {2} ... {19}". Si c'est un désordre mélangé, vous aurez du mal à aligner vos paramètres.
Avec $, vous pouvez ajouter des paramètres en ligne sans compter vos paramètres. Cela rend le code beaucoup plus facile à lire et à maintenir.
L'inconvénient de $ est que vous ne pouvez pas répéter facilement le paramètre dans la chaîne, vous devez le saisir. Par exemple, si vous en avez assez de taper System.Environment.NewLine, vous pouvez faire string.format ("... {0} ... {0} ... {0}", System.Environment.NewLine), mais, en $, vous devez le répéter. Vous ne pouvez pas faire $ "{0}" et le passer à string.format car $ "{0}" renvoie "0".
En passant, j'ai lu un commentaire dans un autre tpoic dupliqué. Je ne pouvais pas commenter, alors, le voici. Il a dit que
string msg = n + " sheep, " + m + " chickens";
crée plusieurs objets chaîne. Ce n'est pas vrai en fait. Si vous faites cela sur une seule ligne, il ne crée qu'une seule chaîne et est placé dans le cache de chaînes.
1) string + string + string + string;
2) string.format()
3) stringBuilder.ToString()
4) $""
Tous renvoient une chaîne et ne créent qu'une seule valeur dans le cache.
D'autre part:
string+= string2;
string+= string2;
string+= string2;
string+= string2;
Crée 4 valeurs différentes dans le cache car il y a 4 ";".
Ainsi, il sera plus facile d'écrire du code comme le suivant, mais vous créeriez cinq chaînes interpolées comme Carlos Muñoz l'a corrigé:
string msg = $"Hello this is {myName}, " +
$"My phone number {myPhone}, " +
$"My email {myEmail}, " +
$"My address {myAddress}, and " +
$"My preference {myPreference}.";
Cela crée une seule chaîne dans le cache alors que vous avez un code très facile à lire. Je ne suis pas sûr des performances, mais je suis sûr que MS l'optimisera s'il ne le fait pas déjà.