Реализация шаблона кода с C # - PullRequest
3 голосов
/ 13 мая 2011

Когда мне нужен шаблон кода, я могу использовать Python следующим образом.

templateString = """
%s 
%s
%s
"""

print templateString % ("a","b","c")

Как реализовать эквивалент с помощью C #?

Я пытался

using System;

class DoFile {

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

Но я получил

dogen.cs(86,0): error CS1010: Newline in constant
dogen.cs(87,0): error CS1010: Newline in constant
dogen.cs(88,0): error CS1010: Newline in constant

Конечно, templateString = "{0}\n{1}\n{2}\n"; работает, но мне нужно использовать шаблон с несколькими строками, так как templateString предназначен для генерации части кода, и он действительно длинный.

Ответы [ 4 ]

3 голосов
/ 13 мая 2011

вам нужно поместить @ перед первой цитатой

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

сделать ее дословно-строковым литералом

В буквальном строковом литерале символы между разделителями интерпретируются дословно, единственное исключение составляет кавычка-escape-последовательность.В частности, простые escape-последовательности и шестнадцатеричные и Unicode escape-последовательности * не обрабатываются * в дословных строковых литералах. Строковый литерал может содержать несколько строк.

3 голосов
/ 13 мая 2011

Сделайте это вместо этого (ad @ перед строковой константой):

class DoFile {

    static void Main(string[] args) {
        string templateString = @"
        {0}
        {1}
        {2}
        ";
        Console.WriteLine(templateString, "a", "b", "c");
    }
}
0 голосов
/ 13 мая 2011

Вам нужно поставить @ перед кавычками для строки, это сделает ее буквальным буквальным символом строки и все равно будет использовать все пробелы, которые вы используете.

0 голосов
/ 13 мая 2011

U может поставить @ перед именем переменной, чтобы получить многострочные строки.

...