Ger*_*nck 4 .net string-concatenation string-formatting
在我早期的.Net编程时代,我只将string.Format()用于复杂的字符串连接,例如将字符串编译为
客户订单234日期为2/2/2002,付款ID为55543.
但是现在我几乎每个字符串连接都使用string.Format,也就是简单的字符串连接,比如在字符串前加上一些东西.
Console.WriteLine(string.Format("\t\t{0}", myString));
Run Code Online (Sandbox Code Playgroud)
这有什么可能的开销吗?也许我应该使用常规+运算符来执行这些简单的操作?
你对此有何看法?
对于简单的字符串连接,请使用该+方法.对于不需要格式的简单事物来说更清楚.
对于具有特定格式的更复杂的字符串,以及保留整个字符串的结构并为输入提供占位符有用的用法String.Format.
是的,有一个开销.String.Format在封面下使用StringBuilder.在这些情况下,简单的字符串连接会更快.可以很容易地找到关于此主题的几个基准和博客文章.当然这一切都取决于你的用法.如果循环中出现小的字符串连接,那么重复使用String.Format可能比简单的连接更明显+.如果你在循环中构建一个大字符串,那么经典的例子是首选,StringBuilder并且可以在SO上找到关于concat与StringBuilder的相关问题.
编辑:澄清一下,这没什么用处:String.Format("{0}{1}", a, b)因为格式不多.这很简单a + b.不幸的是,我在生产代码中遇到了这样的例子,一看到String.Format,我希望看到某些东西需要以某种方式构建,而不是简单的连接.
OTOH,考虑一下这个电话号码:"(" + area + ") " + number + " x" + extension- 有太多的事情要进行修改并不容易.在这种情况下,String.Format是可取的:String.Format("({0}) {1} x{2}", area, number, extension).这仍然是一个微不足道的例子,但你明白了.
| 归档时间: |
|
| 查看次数: |
326 次 |
| 最近记录: |