C# 内插原始字符串文字中的转义大括号

问题描述 投票:0回答:1

我需要使用插值的原始字符串文字中的大括号:

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

我希望输出是

"Foo\n  Bar\n  Baz\n  {{Qux}}"
,但这不会编译:

内插的原始字符串文字没有以足够的“$”字符开头,无法允许这么多连续的左大括号作为内容 CS9006

上面链接的文档指出:

原始字符串文字还可以与内插字符串组合,以在输出字符串中嵌入 { 和 } 字符。您可以在内插的原始字符串文字中使用多个 $ 字符,以将 { 和 } 字符嵌入到输出字符串中,而不转义它们。

我尝试了

${${Qux$}$}
和其他组合;没有编译。

我找不到任何例子。这是怎么做到的?

c# string string-literals string-interpolation c#-11.0
1个回答
5
投票

经过一番反复试验,我发现 leading

$
interpolation
{
}
必须在计数上匹配。

因此,要在使用插值的同时包含逐字子字符串

{{
}}
,必须将
$$$
{{{
}}}
一起使用:

var bar = "Bar";
var s = $$$"""
  Foo
  {{{bar}}}
  Baz
  {{Qux}}
""";
© www.soinside.com 2019 - 2024. All rights reserved.