C# 字符串数组的附加?
假设我有一个C# 字符串数组的附加?,c#,stringbuilder,C#,Stringbuilder,假设我有一个StringBuilder对象 var sb = new StringBuilder(); 和字符串的任意数组 var s = new []{"a","b","c"}; 这是将它们插入stringbuilder实例的“最快”方法吗 sb.Append(string.join(string.empty, s)); 还是StringBuilder有我忽略的功能 编辑:抱歉,我不知道sb将包含多少项,或者每个字符串[]中可能包含多少项。我相信您已经有了正确的答案: sb.Append
StringBuilder
对象
var sb = new StringBuilder();
和字符串的任意数组
var s = new []{"a","b","c"};
这是将它们插入stringbuilder
实例的“最快”方法吗
sb.Append(string.join(string.empty, s));
还是StringBuilder
有我忽略的功能
编辑:抱歉,我不知道sb将包含多少项,或者每个字符串[]中可能包含多少项。我相信您已经有了正确的答案:
sb.Append(string.join(string.empty, s))
string.Concat(…)
应该比string.Join(“,…)
快。此外,这取决于您使用StringBuilder
所做的其他操作。如果您只执行几个连接,那么不使用它会更快
更多的上下文总是有帮助的 如果您所说的“最快”是指性能最好而不是使用更好:
for(int i = 0; i < myArrayLen; i++)
sb.Append(myArray[i]);
for(int i=0;i
信不信由你,但是字符串为4/5时,string.Concat比StringBuilder快。很好地讨论这个问题。要在一行中完成此操作而不使用循环,可以执行以下操作:
sb.Append(String.Join(Environment.NewLine, s));
在s是任何类型的
IEnumerable<string>
IEnumerable
for(int i=0;?for比foreach或linq迭代快得多a for总是比任何linq表达式快,比foreach快一点(因为它通过索引而不是在IEnumerable接口上调用方法)@MassimilianoPeluso不正确。如果您有字符串数组,则使用string.Concat
会更快。您是对的,我指的是LINQ和经典for之间的性能差异(由@pylover评论)有这么简单,我认为这并不重要,这取决于传递给Concat
方法的集合。如果它是IEnumerable
,那么内部Concat
使用StringBuilder
类。