C#中三重双引号(""")的作用是什么?为何不用@""多行字符串?
C#中三重双引号(""")的用途及与@多行字符串的区别
三重双引号是C# 10引入的原始字符串字面量,主要用来更简洁、无转义地定义包含特殊字符或多行的文本内容,相比带@的逐字字符串,它在多个场景下更具优势:
核心用途
直接定义多行文本,同时支持保留文本内的原始格式,无需对双引号、转义符等特殊字符做额外处理,示例如下:
string text = """ some text some text some text """;
与@多行字符串的区别
无需转义内部双引号
用@定义字符串时,要在文本内表示双引号必须写两个"";而三重双引号里可以直接写单个",文本更直观:// 三重双引号写法 string quote = """He said: "Hello World" """; // @写法 string quoteAt = @"He said: ""Hello World""";自动忽略公共缩进
三重双引号会自动去除文本行开头的公共缩进,让代码里的文本排版更整洁,同时生成的字符串不会包含多余的缩进空格;而@字符串会完全保留代码里的缩进:// 三重双引号:最终字符串每行无开头空格 string cleanText = """ line 1 line 2 """; // @字符串:最终字符串每行开头保留缩进 string indentedText = @" line 1 line 2 ";复杂插值更简洁
当结合$做字符串插值时,三重双引号里的大括号{}无需额外转义;而@+$组合的字符串中,要表示普通大括号必须写{{或}}:// 三重双引号直接嵌入表达式 string userInfo = """ Name: {user.Name} Profile: {user.GetProfile()} """; // @+$写法需要转义大括号 string userInfoAt = $@" Name: {{user.Name}} Profile: {{user.GetProfile()}} ";
简单来说,两种语法都能实现多行文本定义,但三重双引号在处理含大量引号、需要对齐排版、复杂插值的场景时,能减少转义操作,让代码可读性更高。
内容的提问来源于stack exchange,提问作者Andrei
相关产品推荐
相关产品推荐

