He estado usando la interpolación de cadenas y me encanta. Sin embargo, tengo un problema en el que intento incluir una barra invertida en mi salida, pero no puedo hacer que funcione.
Quiero algo como esto...
var domain = "mydomain"; var userName = "myUserName"; var combo = $"{domain}\{userName}"Quiero que la salida de combo sea:
myDomain\myUserNameRecibo un error de sintaxis acerca de que \ es un carácter de escape. Si pongo \\ entonces el error de sintaxis desaparece, pero el resultado es myDomain\\myUsername .
¿Cómo puedo incluir caracteres escapados en una cadena interpolada?
Escapar con una barra invertida ( \ ) funciona para todos los caracteres excepto para una llave.
Si está tratando de escapar de una llave ( { o } ), debe usar {{ o }} por $ - interpolación de cadena (referencia de C#)
... Todas las apariciones de llaves dobles ("{{" y "}}") se convierten en una sola llave.
Puede hacer esto, usando tanto el $@. El orden es importante.
var combo = $@"{domain}\{userName}";La pregunta original menciona específicamente C# 6. Como se comentó, C# 8 ya no se preocupa por el orden.
Eduardo tiene razón . Te escapas de las llaves doblando. Por lo tanto, si desea generar la variable de dominio como {mydomain}, deberá hacer lo siguiente:
$"{{{domain}}}";Además, suponiendo que la fecha actual es el 1 de septiembre de 2016, al hacer esto:
$"The date is {DateTime.Now}";generaría algo como "La fecha es 2016/09/01 3:04:48 p. m.", según su localización. También puede formatear la fecha haciendo:
$"The date is {DateTime.Now : MMMM dd, yyyy}";que daría como resultado "La fecha es el 1 de septiembre de 2016". Las cadenas interpoladas son mucho más legibles. Buena respuesta Eduardo.