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

C# 11 Raw String Literals报错:行首空格与闭合行不一致排查

C# 11 原始字符串字面量(Raw String Literals)用法与错误排查

错误原因

你遇到的报错Line does not start with the same whitespace as the closing line of the raw string literal,本质是原始字符串内部的行缩进和闭合引号所在行的缩进不匹配。

看你的代码:

_logger.LogCritical($"""
    
new value: {value}
computed new value :   {value / 100}
old value:  {UwpMediaPlayer.Volume}
    
 """);

闭合的三个引号前面有空格,但内部的new value:行是顶格的,两者缩进不一致,所以触发了错误。

正确写法示例

写法1:统一缩进匹配

把内部内容的缩进调整成和闭合引号相同的空格数:

_logger.LogCritical($"""
    
    new value: {value}
    computed new value :   {value / 100}
    old value:  {UwpMediaPlayer.Volume}
    
 """);

或者反过来,去掉闭合引号前的空格,让内容行也顶格:

_logger.LogCritical($"""
    
new value: {value}
computed new value :   {value / 100}
old value:  {UwpMediaPlayer.Volume}
    
""");

写法2:利用自动截断缩进(推荐)

C# 11支持自动去除所有内容行的共同最小缩进,你可以让内容保持统一缩进,闭合引号单独顶格:

_logger.LogCritical($"""
    new value: {value}
    computed new value :   {value / 100}
    old value:  {UwpMediaPlayer.Volume}
""");

这种写法下,输出的字符串会自动去掉每一行前的4个空格(所有行的共同最小缩进),最终输出内容和顶格写的效果一致。

核心规则

  • 原始字符串开头的三个引号后可以直接写内容,也可以换行
  • 换行写内容时,要么所有内容行和闭合引号行缩进完全一致;要么利用共同缩进自动截断特性,让闭合引号顶格,内容行保持统一缩进
  • 插值表达式{}可以直接在原始字符串中使用,无需转义

内容的提问来源于stack exchange,提问作者Rafi Henig

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 07:01:11