使用StringBulder类的append方法和串联"+"运算符之间的区别

Pra*_*abu 4 c#

使用StringBuilder类的Append方法和使用"+"运算符的Concatenation有什么区别?

在连接两个字符串时,Append方法以什么方式比"+"运算符更有效或更快?

Son*_*nül 5

首先,StringStringBuilder属于不同类别.

Stringclass表示不可变类型,StringBuilder类表示可变类型.

当您使用+concatanate字符串时,它使用String.Concat方法.每次都会返回一个新的字符串对象.

StringBuilder.Appendmethod附加指定字符串的副本.它不会返回一个新字符串,它会更改原始字符串.

为了有效,你应该阅读Jeff的文章 The Sad Tragedy of Micro-Optimization Theater

它.只是.不.物!

我们已经知道这些操作都不会在循环中执行,因此我们可以排除天真字符串连接的残酷性能特征.剩下的就是微优化,只要你开始担心微小的优化,你就已经走错了路.

哦,你不相信我?可悲的是,我自己并不相信,这就是我首先被吸引到这里的原因.以下是我的结果 - 在双核3.5 GHz Core 2 Duo上进行100,000次迭代.

1: Simple Concatenation 606 ms
2: String.Format    665 ms
3: string.Concat    587 ms
4: String.Replace   979 ms
5: StringBuilder    588 ms
Run Code Online (Sandbox Code Playgroud)