我一直认为使用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()
吗?
答案 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
除非您的应用程序针对性能差异做了足够的迭代才能成为您的问题,否则您应该坚持使用您认为最具可读性的内容。