-3

将文本添加到字符串时,我应该使用:

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

或者

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

为什么?

4

2 回答 2

3

如果您要附加几行StringBuilder.AppendLine,性能方面会更好。如果它只是一个然后使用+=.

+=string每次调用它都会创建一个全新的、不可变的。StringBuilder在内部使用扩展缓冲区,然后当您想使用字符串调用时StringBuilder.ToString()

于 2013-05-03T14:20:09.820 回答
1

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

于 2013-05-03T14:22:21.297 回答