用C#写入“逐字字符串”

时间:2011-05-13 18:46:29

标签: c# .net stringtemplate verbatim-string

我需要打印

a
"b"
c

使用vebatim字符串,我提出了另一个关于多行代码模板here的问题。

我尝试使用逐字字符串,如下所示:

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 个答案:

答案 0 :(得分:20)

试试这个(“”而不是“逃避”

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

来自C#规范:http://msdn.microsoft.com/en-us/library/Aa691090

  

报价转义序列:       “”

答案 1 :(得分:8)

在逐字字符串文字中,您使用""表示双引号字符。

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

答案 2 :(得分:4)

在C#中使用@"的多行字符串文字时,双引号的正确转义序列变为""而不是\"

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

答案 3 :(得分:1)

在逐字字符串中,对结果中的""使用"

答案 4 :(得分:1)

@"字符串中,嵌入式双引号转义为"",而不是\"。将您的代码更改为

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

你的问题应该消失。

答案 5 :(得分:0)

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

编辑:更新以在使用Verbatim时显示正确的语法。

答案 6 :(得分:0)

使用“double double”引号在输出中生成单个双引号。它与旧VB6处理字符串的方式相同。

@" ""something"" is here"; 

包含一个字符串,其中包含引号。