0

我一直认为 usingstring.Format()用于格式化数据(因此string.Format())。它的使用示例如下:

string.Format("这条记录的最后更新时间是 {0:MM/dd/yyyy hh:mm}。", DateTime.Now)

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

“恭喜,” + 用户名 + “!您已更新“ + RecordCount.ToString() + “记录!”

...我会这样做:

string.Format("恭喜,{0}!您已更新 {1} 条记录!", Username, RecordCount)

在我的最后一个例子中,没有进行格式化,所以有技术原因不使用string.Format()吗?

4

1 回答 1

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 字符串。格式 ~620ms

除非您的应用程序进行了足够多的迭代以使性能差异成为您的问题,否则您应该坚持使用您认为最易读的内容。

于 2013-07-08T15:24:27.717 回答