String.Format vs ToString()

dou*_*ald 14 c# string.format tostring

任何人都可以解释以下任何一种方法是否有任何好处:

decimal d = 12.0m;

// 1. how I'd have done it
myLabel.Text = d.ToString();

// 2. how I saw someone do it today
myLabel.Text = String.Format("{0}", d);
Run Code Online (Sandbox Code Playgroud)

只是为了澄清,我不是在质疑这些方法的作用,我显然对此感到高兴,就好像在这个具体的例子中,在一个方面可能有一个性能优势.我知道string.format()提供的文化和格式增加了灵活性,但我总是只是'tostring()'数字来将它们的值附加到标签或一般的基于文本的属性.

对我来说,string.format()选项似乎更多的打字,这里没有额外的好处,但我想知道是否有任何其他'引擎盖'的好处,一种方式与另一种方式.

Dav*_*ish 28

我在Linqpad做了一点基准测试:

void Main()
{
    int iterations = 1000000;
    decimal d = 12.0m;
    var text = "";

    var sw = Stopwatch.StartNew();
    for (int i = 0; i < iterations; i++)
    {
        // 1. how I'd have done it
        text = d.ToString();
    }
    sw.Stop();
    sw.ElapsedMilliseconds.Dump("ToString()");

    sw = Stopwatch.StartNew();
    for (int i = 0; i < iterations; i++)
    {
        // 2. how I saw someone do it today
        text = String.Format("{0}", d);
    }
    sw.Stop();
    sw.ElapsedMilliseconds.Dump("Format");
}
Run Code Online (Sandbox Code Playgroud)

ToString()157

格式264

ToString()看起来更快.

编辑:我应该指出,在我的PC上,1000万"格式化"操作只用了2.2秒.这看起来非常像微优化,除非你所做的是极其性能关键或迭代 - 它不会太担心这一点.