假设您想输出或连接字符串。您更喜欢以下哪种风格?

  • var p = new { FirstName = "Bill", LastName = "Gates" };
  • Console.WriteLine("{0} {1}", p.FirstName, p.LastName);
  • Console.WriteLine(p.FirstName + " " + p.LastName);

  • 你更喜欢使用格式还是简单地连接字符串?什么是你最喜欢的?其中之一是否会伤害您的眼睛?

    你有任何合理的论据来使用一种而不是另一种吗?

    我会去第二个。

    最佳答案

    试试这个代码。
    这是对您的代码稍加修改的版本。

  • 我删除了 Console.WriteLine 因为它可能比我试图测量的慢几个数量级。
  • 我在循环之前启动秒表并在循环之后立即停止,这样如果函数需要例如 26.4 个滴答来执行,我不会失去精度。
  • 将结果除以一些迭代的方式是错误的。看看如果你有 1,000 毫秒和 100 毫秒会发生什么。在这两种情况下,除以 1,000,000 后您将得到 0 毫秒。

  • 代码:
    Stopwatch s = new Stopwatch();
    
    var p = new { FirstName = "Bill", LastName = "Gates" };
    
    int n = 1000000;
    long fElapsedMilliseconds = 0, fElapsedTicks = 0, cElapsedMilliseconds = 0, cElapsedTicks = 0;
    
    string result;
    s.Start();
    for (var i = 0; i < n; i++)
        result = (p.FirstName + " " + p.LastName);
    s.Stop();
    cElapsedMilliseconds = s.ElapsedMilliseconds;
    cElapsedTicks = s.ElapsedTicks;
    s.Reset();
    s.Start();
    for (var i = 0; i < n; i++)
        result = string.Format("{0} {1}", p.FirstName, p.LastName);
    s.Stop();
    fElapsedMilliseconds = s.ElapsedMilliseconds;
    fElapsedTicks = s.ElapsedTicks;
    s.Reset();
    
    
    Console.Clear();
    Console.WriteLine(n.ToString()+" x result = string.Format(\"{0} {1}\", p.FirstName, p.LastName); took: " + (fElapsedMilliseconds) + "ms - " + (fElapsedTicks) + " ticks");
    Console.WriteLine(n.ToString() + " x result = (p.FirstName + \" \" + p.LastName); took: " + (cElapsedMilliseconds) + "ms - " + (cElapsedTicks) + " ticks");
    Thread.Sleep(4000);
    
    这些是我的结果:

    关于c# - 字符串输出 : format or concat in C#?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16432/

    10-14 17:17
    查看更多