You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 18:01:09