No C # 6, há um novo recurso: seqüências de caracteres interpoladas.
Isso permite que você coloque expressões diretamente no código, em vez de confiar em índices:
string s = string.Format("Adding \"{0}\" and {1} to foobar.", x, this.Y());
Torna-se:
string s = $"Adding \"{x}\" and {this.Y()} to foobar.";
No entanto, temos muitas seqüências de caracteres em várias linhas usando seqüências textuais (principalmente instruções SQL) como esta:
string s = string.Format(@"Result...
Adding ""{0}"" and {1} to foobar:
{2}", x, this.Y(), x.GetLog());
A reversão para cadeias regulares parece confusa:
string s = "Result...\r\n" +
$"Adding \"{x}\" and {this.Y()} to foobar:\r\n" +
x.GetLog().ToString();
Como uso as seqüências verbatim e interpoladas juntas?
Respostas:
Você pode aplicar ambos
$
e@
prefixos à mesma sequência:Desde que foram introduzidas no C # 6 , as seqüências verbais interpoladas tiveram que começar com os tokens
$@
, mas começando com o C # 8, você pode usar um$@
ou outro@$
.fonte
@$"..."
) não funciona, o que me traz aqui.$@"..."
nessa ordem.$@
funcionar quando@$
não funciona , faz todo o sentido quando você pensa sobre isso. Quando fico confuso sobre isso, o que aconteceu com frequência quando comecei a usar essa sintaxe, sempre dizia para mim mesmo: "Interpole essa sequência literal" porque o contrário não faria sentido.const string
, solte oconst
.