2011-05-13 2 views
3

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

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 для формирования части кода, и это на самом деле длинный.

ответ

3

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

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

сделать его verbatim-string-literal

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

3

ли это вместо (объявление @ перед строкой константы):

class DoFile { 

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

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

0

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