拆分长插值字符串

Sin*_*atr 0 c# code-formatting string-interpolation c#-6.0

一个例子:

var a = $"Some value 1: {b1:0.00}\nSome value 2: {b2}\nSome value 3: {b3:0.00000}\nSome value 4: {b4:0.00}\nSome value 5: {b6:0.0}\nSome value 7: {b7:0.000000000}";
Run Code Online (Sandbox Code Playgroud)

这有点难以阅读.

我能做到

var a = $"Some value 1: {b1:0.00}\n" +
        $"Some value 2: {b2}\n" +
        $"Some value 3: {b3:0.00000}\n" +
        $"Some value 4: {b4:0.00}\n" +
        $"Some value 5: {b6:0.0}\n" +
        $"Some value 7: {b7:0.000000000}";
Run Code Online (Sandbox Code Playgroud)

但是这里有一条评论说什么这将是多次调用string.Format,我认为它会(不知道如何检查它,IL对我来说是一个黑盒子).

问题:可以吗?拆分长插值字符串有哪些其他选项?

Eri*_*ert 7

这将是对string.Format的多次调用,我认为它会

你是对的.你还没有说你为什么关心.为什么要避免这种情况?

可以吗?

我很好.

拆分长插值字符串有哪些其他选项?

我会使用逐字插值字符串.这将很好地解决您的问题.

看到

你如何使用插值的逐字字符串?

(由于这是你在问题中提到的链接,我不是100%明确你提出这个问题的原因,因为你已经阅读了一个建议得到一个好答案的页面.)

我不喜欢$ @ idea,它比长串更糟糕

你可能早点说过.

不能通过重新格式化来源意外损坏?

可以通过更改源来更改所有代码.

拆分长插值字符串有哪些其他选项?

不要首先插入.使字符串成为资源,使类负责获取格式化的资源字符串,并隐藏如何在类的方法内格式化字符串的实现细节.

  • @Sinatr:首先专注于正确,可读和可维护的代码; 当您通过更改正确,可读的代码来解决经验证明的性能问题时,担心"效率". (6认同)