En C # 6, il y a une nouvelle fonctionnalité: les chaînes interpolées.
Celles-ci vous permettent de placer des expressions directement dans le code, plutôt que de vous fier aux index:
string s = string.Format("Adding \"{0}\" and {1} to foobar.", x, this.Y());
Devient:
string s = $"Adding \"{x}\" and {this.Y()} to foobar.";
Cependant, nous avons beaucoup de chaînes sur plusieurs lignes en utilisant des chaînes verbatim (principalement des instructions SQL) comme ceci:
string s = string.Format(@"Result...
Adding ""{0}"" and {1} to foobar:
{2}", x, this.Y(), x.GetLog());
Les restaurer en chaînes régulières semble compliqué:
string s = "Result...\r\n" +
$"Adding \"{x}\" and {this.Y()} to foobar:\r\n" +
x.GetLog().ToString();
Comment utiliser ensemble des chaînes textuelles et interpolées?
Réponses:
Vous pouvez appliquer les deux préfixes
$
et@
à la même chaîne:Depuis leur introduction en C # 6 , les chaînes verbatim interpolées devaient commencer par les jetons
$@
, mais à partir de C # 8, vous pouvez utiliser soit$@
ou@$
.la source
@$"..."
) ne fonctionne pas, ce qui m'amène ici.$@"..."
dans cet ordre.$@
fonctionne quand ce@$
n'est pas le cas est parfaitement logique quand on y pense. Quand je suis confus à ce sujet, ce qui est arrivé fréquemment lorsque j'ai commencé à utiliser cette syntaxe, je me suis toujours dit: "Interpoler cette chaîne textuelle" car le contraire n'aurait pas de sens.const string
, supprimez le fichierconst
.