使用`string.Format`而不是字符串连接以便于阅读是否有缺点?

时间:2013-07-08 12:41:16

标签: .net formatting string-formatting

我一直认为使用string.Format()用于格式化数据(因此string.Format())。其用法的一个例子是:

  

string.Format(“此记录最后更新于{0:MM / dd / yyyy hh:mm}。”,DateTime.Now)

但是,我将它用于任何类型的字符串连接,因为它使代码更容易阅读。例如,而不是这样做:

  

“Contratulations,”+用户名+“!您已更新”+ RecordCount.ToString()+“record(s)!”

......我会这样做:

  

string.Format(“Contratulations,{0}!您已更新{1}条记录!”,用户名,RecordCount)

在我的上一个示例中,没有进行格式化,因此有技术原因不使用string.Format()吗?

1 个答案:

答案 0 :(得分:1)

var userName = "Someone";
var recordCount = 123;
var sw = Stopwatch.StartNew();

for (int i = 0; i < 1000000; i++)
{
    string s = "Contratulations, " + userName + "! You have updated " + recordCount.ToString() + " record(s)!";
}
sw.Stop();
Console.WriteLine("Concat:  {0} ms", sw.ElapsedMilliseconds);
sw.Reset();

sw.Start();
for (int i = 0; i < 1000000; i++)
{
    string s = string.Format("Contratulations, {0}! You have updated {1} record(s)!", userName, recordCount);
}
sw.Stop();
Console.WriteLine("Format:  {0} ms", sw.ElapsedMilliseconds);

通常我更喜欢string.Format,所以我决定看看可能的性能影响。

平均几次运行后的结果:

连接:~280ms string.Format :〜​​620ms

除非您的应用程序针对性能差异做了足够的迭代才能成为您的问题,否则您应该坚持使用您认为最具可读性的内容。