Czy mogę uniknąć podwójnego cytatu w dosłownym ciągu literalnym?

534

W dosłownym dosłownym ciągu literowym (@ „foo”) w języku C #, ukośniki odwrotne nie są traktowane jako znaki ucieczki, więc wykonanie \ ", aby uzyskać podwójny cudzysłów, nie działa. Czy jest jakiś sposób na uzyskanie podwójnego cudzysłowu w dosłownym ciągu literalnym ?

Zrozumiałe, że to nie działa:

string foo = @"this \"word\" is escaped";
kdt
źródło

Odpowiedzi:

870

Użyj podwójnego cytatu.

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

wyjścia:

this "word" is escaped
Myles
źródło
Próbuję użyć @ Html.Raw (), a czterokrotny cytat przerywa mój ciąg
JoshYates1980,
1
Czy możesz go używać bez literału łańcuchowego? Wygląda na to, że Html.Raw () zadbałby o to, aby był dla Ciebie ciągiem ...
Myles
2
Możliwe jest również, aby używać go w połączeniu z interpolacją strun: $@"this ""{wordVar}"" is escaped";.
fdelia
113

Użyj podwójnych cudzysłowów.

string foo = @"this ""word"" is escaped";
Brandon
źródło
95

Aby dodać więcej informacji, twój przykład będzie działał bez @symbolu (zapobiega ucieczce za pomocą \), w ten sposób:

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

Działa to w obie strony, ale wolę styl podwójnego cudzysłowu, aby ułatwić pracę, na przykład z nazwami plików (z dużą ilością \ w ciągu).

jaestevan
źródło
81

To powinno pomóc wyjaśnić wszelkie pytania: c # literały

Oto tabela z połączonej treści:

wprowadź opis zdjęcia tutaj

rfonn
źródło