如何以逐字字符串的forms逃脱?

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

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

o / p – >这是一个“常规”字符串

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

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

为什么以上不起作用?

使用双引号:

  string s2 = @"This is \ta ""verbatim"" string"; 

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

 string s2 = @"This is \ta ""verbatim"" string"; 

在此处输入图像描述

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

2.4.4.5字符串文字

C#支持两种forms的字符串文字:常规字符串文字和逐字字符串文字。

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

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

在Verbatim字符串中,反斜杠被视为标准字符,而不是转义字符。 需要转义的唯一字符是引号,您可以使用相同的字符转义:

 string s2 = @"This is \ta ""verbatim"" string"; 

当然你永远不能使用这个方法添加像\t (tab)这样的特殊字符,所以它只对简单的字符串有用 – 我想我在处理文件路径时只会使用它。