2013-01-04 36 views
0

明智的性能更快:通过使用+运算符,&运算符或通过string.format构建字符串?明智的更快性能:通过使用+运算符,&运算符或通过string.format构建字符串?

varname,title,city,state,orgtype是我声明的变量。

例如:

1.

varname = title + " in " + city + ", " + state + ". Contact " + title + ". " + orgtype + " " + city + "." 

2.

varname = title & " in " & city & ", " & state & ". Contact " & title & ". " & orgtype & " " & city & "." 

3.

varname = string.format("{0} in {1}, {2}. Contact {0}. {3} {1}.", title, city, state, orgtype) 
+0

你忘了添加'StringBuilder'方法。以下是Jon Skeet所说的内容:http://www.yoda.arachsys.com/csharp/stringbuilder.html(请注意,您也可以在VB.NET上应用关于C#的所有内容) –

+0

@TimSchmelter:这会比较慢。 – SLaks

+0

@TimSchmelter:这比任何这些方法都要慢。 (他没有使用循环) – SLaks

回答

4

前两个选项编译成IL相同并且是最快的方法。

第三个选项需要在运行时解析字符串以找到{}对,使其变慢。


表达式像a + b + c将编译为一个单一的String.Concat(...)通话,不浪费任何字符串文字。

您应该避免使用普通字符串连接的唯一时间是insiude循环,其中编译器无法将其扁平化为单个调用。
相反,你应该用LINQ和String.Join替换循环,或使用StringBuilder