Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 字符串数组的附加?_C#_Stringbuilder - Fatal编程技术网

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
类。