我怎么逃避"逐字串?

Sri*_*uku 25 .net c# string escaping verbatim-string

我对c#有点新,我在这一点上卡住了,我有一个常规的字符串,我用它\来逃避",逃到这里意味着逃避编译器的解释",并"在屏幕上打印,而我得到预期的输出 - >

class Program
{
    static void Main(string[] args)
    {
        string s1 = "This is a \"regular\" string";
        System.Console.WriteLine(s1);
        System.Console.Read();
    }
}
Run Code Online (Sandbox Code Playgroud)

o/p - >这是一个"常规"字符串

现在,我有一个逐字字符串,我试图以与上面相同的方式逃避"使用\..-->

class Program
{
    static void Main(string[] args)
    {
        string s2 = @"This is \t a \"verbatim\" string";//this would escape \t
        System.Console.WriteLine(s2);
        System.Console.Read();
    }
}
Run Code Online (Sandbox Code Playgroud)

为什么以上不起作用?

Dar*_*ren 39

使用双引号:

 string s2 = @"This is \t a ""verbatim"" string";
Run Code Online (Sandbox Code Playgroud)

  • 从技术上讲,这是一个"双倍"报价:) (14认同)
  • @MatthewWatson,您的评论是双双双引号 (3认同)

Son*_*nül 9

如果要编写包含双引号的逐字字符串,则必须编写两个双引号.

string s2 = @"This is \t a ""verbatim"" string";
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

在C#规范的2.4.4.5节中有所介绍:

2.4.4.5字符串文字

C#支持两种形式的字符串文字:常规字符串文字和逐字字符串文字.

常规字符串文字由用双引号括起来的零个或多个字符组成,如"hello"中所示,并且可以包括简单转义序列(例如用于制表符的\ t)和十六进制和Unicode转义序列.

逐字字符串文字由@字符后跟双引号字符,零个或多个字符以及结束双引号字符组成.一个简单的例子就是@"你好".在逐字字符串文字中,分隔符之间的字符是逐字解释的,唯一的例外是quote-escape-sequence.特别是,简单的转义序列和十六进制和Unicode转义序列不会在逐字字符串文字中处理.逐字字符串文字可以跨越多行.