的String.Format VS的ToString()(String.Format vs ToSt

2019-07-29 05:23发布

谁能解释如果在以下任何一种方法的任何益处:

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);

只是为了澄清,我不是什么查询方法做,我与明显开心,只是如果有可能是在这个具体的例子在一个性能上要优于其他。 我所知道的通过的String.Format()所提供的文化和格式化的更大的灵活性,但我始终只是“的ToString()”数值运算到自己的价值附加到一个标签,或者在一般的基于文本的属性。

对我来说,的String.Format()选项,似乎是在这里没有额外的好处更多打字,但我不知道是否有做事情的一种方式VS其他的任何其他'引擎盖下的利益。

Answer 1:

我做了一些标杆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");
}

的ToString()157

格式264

toString()方法看起来始终快。

编辑:我要指出的是,我的电脑10万美元的“格式”的操作只用了2.2秒。 这看起来非常像一个微型优化,除非你在做什么是非常关键性能,或迭代 - 这倒是不担心这太多了。



Answer 2:

字符串格式-在hood-下使用StringBuilder这对处理字符串要快得多- 。

的ToString是一个对象的默认表示。



Answer 3:

string.Format可用于创建其他复杂的字符串,因为它可能需要一个params参数集; 所以这是不是真的苹果VS苹果的问题。



Answer 4:

ToString()是更好的,因为Format()需要调用ToString()反正引擎盖下。 如果你需要指定自定义格式, Format()提供的格式说明像对齐/填充。 否则,没有理由不使用ToString()

ToString()适合大大优于进入自我记录代码Format()只是更有意义。



Answer 5:

我希望那里是调用的边际性能优势ToString()因为它没有解析您的格式字符串。 如果你不使用的功能,哪些功能,以及它读取更漂亮Format()



文章来源: String.Format vs ToString()