Помещение \"в дословную строку с C#

Мне нужно распечатать

a
"b"
c

со строкой vebatim я поставил здесь еще один вопрос о шаблоне кода из нескольких строк.

Я попробовал с дословной строкой следующее:

using System;

class DoFile {

    static void Main(string[] args) {
        string templateString = @"
        {0}
        \\"{1}\\"
        {2}
        ";
        Console.WriteLine(templateString, "a", "b", "c");
    }
}

Но я получил эту ошибку.

t.cs(8,11): error CS1525: Unexpected symbol `{'
t.cs(9,0): error CS1010: Newline in constant
t.cs(10,0): error CS1010: Newline in constant

\"{1}\" не работает ни

В чем дело?

7 ответов

Решение

Попробуйте это ( "вместо" чтобы убежать)

string templateString = @"
        {0}
        ""{1}""
        {2}
        ";

Из спецификации C#: http://msdn.microsoft.com/en-us/library/Aa691090

quote-escape-sequence: ""

В дословном строковом литерале вы используете "" для двойных кавычек.

string line = @"
{0}
""{1}""
{2}";

При использовании многострочного строкового литерала в C# с @"правильная escape-последовательность для двойной кавычки становится "" вместо \",

    string templateString = @"
    {0}
    ""{1}""
    {2}
    ";

В @" строка, встроенные двойные кавычки экранируются как "",не \", Измените свой код на

    string templateString = @"
    {0}
    ""{1}""
    {2}
    ";

и твои проблемы должны уйти.

В дословной строке используйте "" для " в результате.

Используйте двойную двойную кавычку, чтобы получить одинарную двойную кавычку в выходных данных. Это так же, как старый VB6 будет обрабатывать строки.

@" ""something"" is here"; 

содержит строку с кавычками вокруг чего-либо.

string templateString = @"        
{0}        
""{1}""
{2}
";

РЕДАКТИРОВАТЬ: Обновлено, чтобы показать правильный синтаксис при использовании Verbatim.

Другие вопросы по тегам