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

C#插值原始字符串字面量中如何嵌入大括号?

问题原因

你使用单个$前缀的插值原始字符串($""")时,单个{会触发插值逻辑。当你写{{Qux}}时,第一个{启动插值,第二个{被视为插值表达式的一部分,但后续没有匹配的}结束插值,因此触发CS9006错误。

解决方案

调整$前缀的数量,让触发插值所需的连续{数量大于你要输出的字面量{数量,同时对应调整插值表达式的包裹方式:

方法一(推荐,匹配你的需求)

使用3个$前缀($$$"""),此时只有连续3个{才会触发插值,连续2个{会被直接当作字面量输出。插值bar变量时,用3个{和3个}包裹表达式:

var bar = "Bar";
var s = $$$"""
  Foo
  {{{bar}}}
  Baz
  {{Qux}}
""";
Console.WriteLine(s);

输出结果完全符合预期:

Foo
  Bar
  Baz
  {{Qux}}

方法二(适用于其他场景)

如果只使用2个$前缀($$"""),此时连续2个{触发插值,单个{是字面量。若Qux是字面量,要输出{{Qux}}需拆分写法,同时用{{bar}}实现插值:

var bar = "Bar";
var s = $$"""
  Foo
  {{bar}}
  Baz
  {{}{{Qux}}{}}
""";

这种写法相对繁琐,仅适合需要单个字面量{的场景,因此方法一更适配你的需求。

核心规则

插值原始字符串的$前缀数量k决定了:

  • 连续k个{:启动插值表达式,直到遇到连续k个}结束,替换为表达式的值
  • 少于k个的连续{/}:直接作为字面量输出

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 03:40:56