插值字符串格式问题

Fil*_*inx 9 .net c# c#-6.0

我现在多次偶然发现插值字符串的一个问题.

考虑以下情况:

double number = 123.4567;
var str = $"{{{number:F2}}}"; //I want to get "{123.45}"
Console.WriteLine(str); // Will print "{F2}"
Run Code Online (Sandbox Code Playgroud)

一开始有点令人惊讶但是一旦你意识到花括号是如何配对的,这是有道理的.以下两个花括号是插值字符串中单个卷曲的转义序列.因此插值表达式的左括号与字符串中的最后一个卷曲配对.

     ___pair____
    |           |
$"{{{number:F2}}}";
Run Code Online (Sandbox Code Playgroud)

现在,您可以执行以下操作来中断转义序列:

var str = $"{{{number:F2} }}"; // This will be "{123.45 }"
Run Code Online (Sandbox Code Playgroud)

请注意此方法添加到输出的空格字符.(不理想)

我的问题:

假设我想使用单个插值字符串来准确输出"{123.45}"

这样做是否可能不做如下的hackish?

var s = $"{{{number:F2}{'}'}";
Run Code Online (Sandbox Code Playgroud)

pfx*_*pfx 2

假设不需要使用命名格式字符串,您可以使用:

var s = $"{{{number:#.#0}}}";
Run Code Online (Sandbox Code Playgroud)