¿Puedo escapar de una comilla doble en un literal de cadena literal?

534

En un literal de cadena literal (@ "foo") en C #, las barras invertidas no se tratan como escapes, por lo que hacer \ "para obtener una comilla doble no funciona. ¿Hay alguna manera de obtener una comilla doble en un literal de cadena literal? ?

Es comprensible que esto no funcione:

string foo = @"this \"word\" is escaped";
kdt
fuente

Respuestas:

870

Use una comilla doble duplicada.

@"this ""word"" is escaped";

salidas:

this "word" is escaped
Myles
fuente
Estoy tratando de usar @ Html.Raw () y la cita cuádruple rompe mi cadena
JoshYates1980
1
¿Puedes usarlo sin la cadena literal? Parece que Html.Raw () se encargaría de asegurar que es una cadena para usted ...
Myles
2
También es posible utilizarlo en combinación con interpolación de cadenas: $@"this ""{wordVar}"" is escaped";.
fdelia
113

Use comillas dobles.

string foo = @"this ""word"" is escaped";
Brandon
fuente
95

Para agregar más información, su ejemplo funcionará sin el @símbolo (impide escapar con \), de esta manera:

string foo = "this \"word\" is escaped!";

Funcionará en ambos sentidos, pero prefiero el estilo de comillas dobles para que sea más fácil trabajar, por ejemplo, con nombres de archivo (con muchos \ en la cadena).

jaestevan
fuente
81

Esto debería ayudar a aclarar cualquier pregunta que pueda tener: literales de c #

Aquí hay una tabla del contenido vinculado:

ingrese la descripción de la imagen aquí

rfonn
fuente