我需要使用插值的原始字符串文字中的大括号:
var bar = "Bar";
var s = $"""
Foo
{bar}
Baz
{{Qux}}
""";
Console.WriteLine(s);
我希望输出是
"Foo\n Bar\n Baz\n {{Qux}}"
,但这不会编译:
内插的原始字符串文字没有以足够的“$”字符开头,无法允许这么多连续的左大括号作为内容 CS9006
上面链接的文档指出:
原始字符串文字还可以与内插字符串组合,以在输出字符串中嵌入 { 和 } 字符。您可以在内插的原始字符串文字中使用多个 $ 字符,以将 { 和 } 字符嵌入到输出字符串中,而不转义它们。
我尝试了
${${Qux$}$}
和其他组合;没有编译。
我找不到任何例子。这是怎么做到的?
经过一番反复试验,我发现 leading
$
和 interpolation {
和 }
必须在计数上匹配。
因此,要在使用插值的同时包含逐字子字符串
{{
和 }}
,必须将 $$$
与 {{{
和 }}}
一起使用:
var bar = "Bar";
var s = $$$"""
Foo
{{{bar}}}
Baz
{{Qux}}
""";