Можно ли избежать двойных кавычек в буквальном строковом литерале? - PullRequest
507 голосов
/ 18 декабря 2009

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

Понятно, что это не работает:

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

Ответы [ 4 ]

839 голосов
/ 18 декабря 2009

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

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

выходы:

this "word" is escaped
111 голосов
/ 18 декабря 2009

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

string foo = @"this ""word"" is escaped";
94 голосов
/ 18 декабря 2009

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

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

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

75 голосов
/ 18 декабря 2009

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

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

enter image description here

...