En C # 6 hay una nueva característica: cadenas interpoladas.
Estos le permiten poner expresiones directamente en el código, en lugar de depender de índices:
string s = string.Format("Adding \"{0}\" and {1} to foobar.", x, this.Y());
Se convierte en:
string s = $"Adding \"{x}\" and {this.Y()} to foobar.";
Sin embargo, tenemos muchas cadenas a través de varias líneas usando cadenas literales (principalmente sentencias SQL) como esta:
string s = string.Format(@"Result...
Adding ""{0}"" and {1} to foobar:
{2}", x, this.Y(), x.GetLog());
Revertir estos a cadenas regulares parece desordenado:
string s = "Result...\r\n" +
$"Adding \"{x}\" and {this.Y()} to foobar:\r\n" +
x.GetLog().ToString();
¿Cómo uso las cadenas textuales e interpoladas juntas?
Respuestas:
Puede aplicar ambos
$
y@
prefijos a la misma cadena:Desde que se introdujo en C # 6 , las cadenas textuales interpoladas tuvieron que comenzar con los tokens
$@
, pero a partir de C # 8, puede usar$@
o@$
.fuente
@$"..."
) no funciona, lo que me trae aquí.$@"..."
en ese orden.$@
funciona cuando@$
no funciona, tiene mucho sentido cuando lo piensas. Cuando me confundo acerca de esto, lo que sucedió con frecuencia cuando comencé a usar esta sintaxis, siempre me decía: "Interpolar esta cadena literal" porque lo contrario no tendría sentido.const string
, suelte elconst
.