Jon*_*zzi -2 c# syntactic-sugar string-interpolation c#-6.0
我在C#6.0中有2个代码:
样本1:
var foo = "Some text, " +
$"some other {bar}, " +
"end text.";
Run Code Online (Sandbox Code Playgroud)
样本2:
var foo = $"Some text, " +
$"some other {bar}, " +
$"end text.";
Run Code Online (Sandbox Code Playgroud)
显然两个代码都会产生相同的结果,但第二个代码在美学上更加美观(这是我的意见,请记住每个代码都有你的).
问题:
如果不需要$,是否有问题(性能或其他)写一个前缀为$的字符串.
编辑: 回答一些投诉:
第二个是可怕的.不要对未插值的字符串使用字符串插值符号($).任何看过代码的人(或未来,更有经验的人)都会感到困惑
这完全是您的看法,我在这里有一个团队,有10位高级C#开发人员,都同意第二个更清晰.
@ChetanRanpariya这不是真的.插值字符串是用于调用string.Format的语法糖,必须调用它(从而影响性能).
你需要提供证明你在说什么.
所述$创建的内插串这是与使用String.Format.如果使用+字符串文字,则编译器会优化代码以避免连接在一起.使用插值字符串可能会阻止此优化.
编辑
性能和文字优化测试
好吧,我刚刚对此进行了测试,似乎没有任何性能问题.显然编译器会忽略$并且不使用String.Format(如果不{}存在).我的测试结果如下所示,有600万个构造50长度字符串的循环.
String.Format:23700毫秒$"a{null}"用+:22650毫秒$"a"用+:13毫秒"a"用+:13毫秒"a"连接+:700毫秒而且,看IL也没有区别.因此,性能方面,您发布的代码执行和优化相同,$被忽略,只是使用时的一个因素{}.
句法
当然,关于这是否是良好的语法可能存在争议.我可以想到支持和反对的论据.
优点
$已经存在,则添加新参数会更容易缺点
对我来说,倾斜点是我看到$并希望看到一个{}和一个论点.如果我看不到我期望看到的东西,它会导致认知失调.另一方面,我可以想象它提供的流动性可能会出现这种情况.可能很远,它取决于开发组和目标.
| 归档时间: |
|
| 查看次数: |
547 次 |
| 最近记录: |