在C#中的逐字字符串文字(@“foo”)中,反斜杠不被视为转义,所以做“获得双引号不起作用。有没有办法在一个双引号中逐字字符串文字?
这可以理解为不起作用:
string foo = @"this \"word\" is escaped";
答案 0 :(得分:837)
使用重复的双引号。
@"this ""word"" is escaped";
输出:
this "word" is escaped
答案 1 :(得分:111)
使用双引号。
string foo = @"this ""word"" is escaped";
答案 2 :(得分:94)
要添加更多信息,您的示例将在没有@
符号的情况下工作(它可以防止使用\转义),这样:
string foo = "this \"word\" is escaped!";
它可以双向工作,但我更喜欢双引号样式,以便更容易工作,例如,使用文件名(字符串中有大量的\)。
答案 3 :(得分:75)
答案 4 :(得分:0)
在 GitHub 中公开了一项针对 C# 语言的提案,旨在更好地支持原始字符串文字。一个有效的答案是鼓励 C# 团队向该语言添加新功能(例如三重引号 - 像 Python)。
见https://github.com/dotnet/csharplang/discussions/89#discussioncomment-257343
答案 5 :(得分:0)
正如docs所说:
<块引用>简单的转义序列...按字面解释。只有引号转义序列 (""
) 不被逐字解释;它产生一个双引号。此外,在逐字内插字符串大括号转义序列({{
和 }}
)的情况下,不会按字面解释;它们产生单大括号字符。