我可以转义双引号在逐字串字面?

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

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

string foo = @"this \"word\" is escaped";
424570 次浏览

使用重复的双引号。

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

输出:

this "word" is escaped

使用双引号。

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

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

下面是链接内容的表格:

常规的文字 逐字直译 生成的字符串
# EYZ0 # EYZ0 # EYZ0
# EYZ0 # EYZ0 # EYZ0
# EYZ0 # EYZ0 # EYZ0
# EYZ0 # EYZ0 # EYZ0
< / div > < /引用>

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

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

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

更新:与c# 11预览功能-原始字符串字面量

string foo1 = """
this "word" is escaped
""";


string foo2 = """this "word" is escaped""";

历史:

在GitHub中有一个关于c#语言更好地支持原始字符串文字的提议。一个有效的答案是,鼓励c#团队为语言添加一个新特性(比如像Python那样的三重引号)。

看到# EYZ0

正如的文档所说:

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