在c#中的逐字字符串文字(@"foo")中,反斜杠不被视为转义,因此使用\"来获得双引号是行不通的。有没有办法在逐字串文字中获得双引号?

可以理解,这是行不通的:

string foo = @"this \"word\" is escaped";

当前回答

这应该有助于澄清您可能存在的任何问题:c#字面量

下面是链接内容的表格:

常规的文字 逐字直译 生成的字符串 “你好” @“你好” 你好 “反斜杠:\ \” @“反斜杠:\” 反斜杠:\ “引用:\”“ @“引用:“”“ 引用:“ “CRLF: \ r \ nPost CRLF” @“CRLF: CRLF” CRLF: Post CRLF

其他回答

为了添加更多的信息,你的例子在没有@符号的情况下也能正常工作(它可以防止使用\转义),如下所示:

string foo = "this \"word\" is escaped!";

它可以双向工作,但我更喜欢双引号风格,因为它更容易工作,例如,文件名(字符串中有很多\)。

使用重复的双引号。

@"this ""word"" is escaped";

输出:

this "word" is escaped

如文档所述:

简单的转义序列……被逐字解读。只有引号转义序列("")不逐字解释;它产生一个双引号。此外,对于逐字插值的字符串大括号转义序列({{和}})不逐字解释;它们产生单括号字符。

使用双引号。

string foo = @"this ""word"" is escaped";

这应该有助于澄清您可能存在的任何问题:c#字面量

下面是链接内容的表格:

常规的文字 逐字直译 生成的字符串 “你好” @“你好” 你好 “反斜杠:\ \” @“反斜杠:\” 反斜杠:\ “引用:\”“ @“引用:“”“ 引用:“ “CRLF: \ r \ nPost CRLF” @“CRLF: CRLF” CRLF: Post CRLF