我应该使用追加行还是+ =

时间:2013-05-03 14:17:57

标签: c# string stringbuilder

当我在字符串中添加文字时,我应该使用:

var myStringBuilder = new StringBuilder(); 
myStringBuilder.AppendLine("some text");

var myString = "";
myString += ("some text");

为什么?

2 个答案:

答案 0 :(得分:3)

如果您要追加多行StringBuilder.AppendLine,那么性能会更好。如果它只是一个,那么使用+=

每次调用它时,

+=都会创建一个全新的,不可变的string。当您想要使用字符串调用StringBuilder

时,StringBuilder.ToString()会在内部使用扩展缓冲区

答案 1 :(得分:1)

您应该始终使用AppendLine及其兄弟功能。第二种语法有效,但只是因为有足够的隐式转换可用。即使对于单个附加,它也不会比Append变量具有更低的性能,因为它在内部执行一些额外的字符串分配来执行追加,而StringBuilder已经在内部保留了空间。如果一个代表性的基准测试显示第一个例子比第二个例子快至少3倍,我就不会感到惊讶。