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


534

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

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

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

Ответы:


870

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

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

выходы:

this "word" is escaped

Я пытаюсь использовать @ Html.Raw (), и четверная кавычка разрывает мою строку
JoshYates1980

1
Можете ли вы использовать его без строкового литерала? Кажется, что Html.Raw () позаботится о том, чтобы это была строка для вас ...
Myles

2
Кроме того , можно использовать его в сочетании с интерполяцией строк: $@"this ""{wordVar}"" is escaped";.
fdelia

113

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

string foo = @"this ""word"" is escaped";

95

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

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

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


81

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

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

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.