【发布时间】:2017-02-04 01:21:26
【问题描述】:
在许多语言中使用+= 运算符的连接创建一个新的字符串实例。最好使用我们最后加入的string[]。
在 Javascript 中:
var myString = new Array("Hello");
myString.push(" ");
myString.push("world !");
console.log(myString.join(''));
效率更高:
var myString = "Hello";
myString += " ";
myString += "world !";
console.log(myString);
在 C# 中,+= 运算符是否创建一个新字符串?
StringBuilder 是否比使用 string[] 更有效?
【问题讨论】:
-
这种问题最好用现实世界的例子和基准来回答,而不是纯粹的理论考试。您能否提供您希望看到基准测试的示例?
-
请注意,
a += b或a = a + b会被 C# 编译器转换为a = string.Concat(a, b) -
它们有两种不同的用途。
StringBuilder用于直接连接任意数量的字符串,无论是否在集合中 -string.Join用于使用分隔符连接字符串(来自集合)。如果您想使用Join连接带有空分隔符的字符串,没有什么可以阻止您,但这不是预期的目的。