字符串输出:C# 中的格式或连接? [英] String output: format or concat in C#?

查看:29
本文介绍了字符串输出:C# 中的格式或连接?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

Let's say that you want to output or concat strings. Which of the following styles do you prefer?

  • var p = new { FirstName = "Bill", LastName = "Gates" };

Console.WriteLine("{0} {1}", p.FirstName, p.LastName);

Console.WriteLine(p.FirstName + " " + p.LastName);

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

Do you rather use format or do you simply concat strings? What is your favorite? Is one of these hurting your eyes?

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

Do you have any rational arguments to use one and not the other?

我会去第二个.

推荐答案

试试这个代码.

这是对您的代码稍加修改的版本.

It's a slightly modified version of your code.

  1. 我删除了 Console.WriteLine,因为它可能比我尝试测量的慢几个数量级.
  2. 我在循环之前启动秒表并在循环之后立即停止,这样如果函数需要例如 26.4 个滴答来执行,我不会失去精度.
  3. 您将结果除以一些迭代的方式是错误的.看看如果你有 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);

这些是我的结果:

1000000 x result = string.Format("{0} {1}", p.FirstName, p.LastName);花费:618 毫秒 - 2213706 个滴答声
1000000 x 结果 = (p.FirstName + "" + p.LastName);耗时:166 毫秒 - 595610 个滴答

1000000 x result = string.Format("{0} {1}", p.FirstName, p.LastName); took: 618ms - 2213706 ticks
1000000 x result = (p.FirstName + " " + p.LastName); took: 166ms - 595610 ticks

这篇关于字符串输出:C# 中的格式或连接?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆