C# 使用string.concat或string builder更好吗?

C# 使用string.concat或string builder更好吗?,c#,string,C#,String,使用string.concat或string builder更好吗?有人能解释一下在什么情况下我应该使用这两个吗 有一个问题解释了性能,我想知道在哪里使用string.concat,在哪里避免它 提前感谢。您可以从参考资料中看到 [ComVisible(false)] 公共静态字符串Concat(IEnumerable值){ 如果(值==null) 抛出新的ArgumentNullException(“值”); Contract.sure(Contract.Result()!=null); C

使用string.concat或string builder更好吗?有人能解释一下在什么情况下我应该使用这两个吗

有一个问题解释了性能,我想知道在哪里使用string.concat,在哪里避免它

提前感谢。

您可以从参考资料中看到

[ComVisible(false)]
公共静态字符串Concat(IEnumerable值){
如果(值==null)
抛出新的ArgumentNullException(“值”);
Contract.sure(Contract.Result()!=null);
Contract.EndContractBlock();
StringBuilder结果=StringBuilderCache.Acquire();
使用(IEnumerator en=values.GetEnumerator()){
while(en.MoveNext()){
如果(en.Current!=null){
结果追加(en.Current);
}
}            
}
返回StringBuilderCache.GetStringAndRelease(结果);
}

String.Concat
使用
StringBuilder
这就是为什么两种方法大致相同的原因。

另外,如果您有一个已知大小的字符串集合,您可以使用
StringBuilder
并通过长度总和初始化其容量-这将节省增加
StringBuilder
的内部缓冲区大小所需的一些时间<正如您在Dmitry的评论中所看到的,code>String.Concat不这样做。

String.Concat
使用
StringBuilder
来完成它的工作。因此,如果您有一个包含多个字符串的操作,我更喜欢
string.Concat
,因为它的语法更短

 var result = string.Concat("abc", "def");
如果必须执行多个操作,则应使用一个
StringBuilder
实例以提高性能(因为每次多个
string.Concat
调用都会实例化它们自己的
StringBuilder

var builder=new StringBuilder();
for(int i=0;i
String.Concat
使用
StringBuilder
,因此,如果您在循环中串联或对Concat()进行大量单独调用,则它们大致相等,否则,如果您已经拥有所有要关联的值,则可以使用
String.Concat()(在
列表
字符串[]
或另一种
IEnumerable
中)使用
String.Concat
。如果需要确定要附加的字符串(例如,在具有附加逻辑的循环中)使用您自己的
StringBuilder
。否则您将在
Concat
中创建许多不必要的
StringBuilder
-实例。您提供的链接是否已经有了答案?当对
string.Concat()进行许多单独调用时,这并不能解决常见模式
,例如在循环中调用时。在这种情况下,应使用
StringBuilder
。我在项目中的一些地方使用string.concat在消息框控件中生成错误消息。错误消息使用不同的值,因此我无法使用通用方法或字符串生成器。我在这里使用string.concat是正确的?@Nisha:如果您需要多个string.Concat操作来创建结果字符串,则首选StringBuilder。如果所有操作都可以在一个操作中将多个字符串连接在一起,则string.Concat更易于阅读。哦,好的,我现在就知道了。谢谢。
 var result = string.Concat("abc", "def");
 var builder = new StringBuilder();
 for (int i = 0; i < numberOfOperations; i++)
 {
      builder.Append(getStringResult());
 }