Можно ли избежать двойных кавычек в буквальном строковом литерале?

534

В дословном строковом литерале (@ "foo") в C # обратные слеши не рассматриваются как escape-символы, поэтому выполнение \ "для получения двойной кавычки не работает. Есть ли способ получить двойную кавычку в дословном строковом литерале ?

Это по понятным причинам не работает:

string foo = @"this \"word\" is escaped";
КДТ
источник

Ответы:

870

Используйте двойную двойную кавычку.

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

выходы:

this "word" is escaped
Myles
источник
Я пытаюсь использовать @ Html.Raw (), и четверная кавычка разрывает мою строку
JoshYates1980
1
Можете ли вы использовать его без строкового литерала? Кажется, что Html.Raw () позаботится о том, чтобы это была строка для вас ...
Myles
2
Кроме того , можно использовать его в сочетании с интерполяцией строк: $@"this ""{wordVar}"" is escaped";.
fdelia
113

Используйте двойные кавычки.

string foo = @"this ""word"" is escaped";
Brandon
источник
95

Для добавления дополнительной информации ваш пример будет работать без @символа (он предотвращает экранирование с \) следующим образом:

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

Он будет работать в обоих направлениях, но я предпочитаю стиль двойных кавычек, чтобы он был легче работать, например, с именами файлов (с большим количеством \ в строке).

jaestevan
источник
81

Это должно помочь прояснить любые ваши вопросы: c # literals

Вот таблица из связанного контента:

введите описание изображения здесь

rfonn
источник