如何解决字符串输出:C# 中的格式或连接?
试试这个代码。
这是您的代码稍作修改的版本。
-
我删除了 Console.WriteLine,因为它可能比我要测量的要慢几个数量级。
-
我在循环之前启动秒表并在循环之后立即停止它,这样如果函数需要例如 26.4 个滴答声来执行,我就不会失去精度。
-
您将结果除以一些迭代的方式是错误的。看看如果你有 1000 毫秒和 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); took: 618ms - 2213706 ticks 1000000 x result = (p.FirstName + ” ” + p.LastName); took: 166ms - 595610 ticks
解决方法
假设您要输出或连接字符串。你更喜欢以下哪种风格?
-
var p = new { FirstName = "Bill",LastName = "Gates" };
-
Console.WriteLine("{0} {1}",p.FirstName,p.LastName);
-
Console.WriteLine(p.FirstName + " " + p.LastName);
你宁愿使用格式还是简单地连接字符串?什么是你最喜欢的?其中之一会伤害你的眼睛吗?
你有任何合理的论据来使用一个而不是另一个吗?
我会去第二个。