C# StringBuilder,两个语法之间的差异

C# StringBuilder,两个语法之间的差异,c#,performance,stringbuilder,C#,Performance,Stringbuilder,以下两者之间是否有区别: StringBuilder requete = new StringBuilder(); requete.Append(" INSERT into " + listeLibelleTable[index] + " ( "); 及 当我说“差异”时,我指的是性能方面,例如,如果这段代码在循环中 我想这条线 requete.Append(" INSERT into " + listeLibelleTable[index] + " ( "); 是在编译时解析的,因此它在性

以下两者之间是否有区别:

StringBuilder requete = new StringBuilder();
requete.Append(" INSERT into " + listeLibelleTable[index] + " ( ");

当我说“差异”时,我指的是性能方面,例如,如果这段代码在循环中

我想这条线

requete.Append(" INSERT into " + listeLibelleTable[index] + " ( ");

是在编译时解析的,因此它在性能方面不应该有任何影响,但我不确定这一点,除非
listeLibelleTable[index]
确实可以在编译时解析(我非常怀疑),否则使用字符串连接似乎会对使用
StringBuilder
产生反作用

在第二个示例中,您将连接一个字符串,然后将其追加,而不是追加到
StringBuilder

在这两种情况下,您可能都应该使用以下选项以提高可读性:

requete.AppendFormat(" INSERT into {0} ( ", listeLibelleTable[index]);

除非
listeLibelleTable[index]
确实可以在编译时解析(我对此深表怀疑),否则使用字符串连接似乎与使用
StringBuilder
相反

在第二个示例中,您将连接一个字符串,然后将其追加,而不是追加到
StringBuilder

在这两种情况下,您可能都应该使用以下选项以提高可读性:

requete.AppendFormat(" INSERT into {0} ( ", listeLibelleTable[index]);
我认为这样做:

" INSERT into " + listeLibelleTable[index] + " ( "
您将使用更多内存来存储concat操作的结果

我认为这样做:

" INSERT into " + listeLibelleTable[index] + " ( "

您将使用更多内存来存储concat操作的结果

您的第一个代码是执行串联,构建一个完整的字符串,然后将其附加到
StringBuilder
。假设你还要附加其他东西,第二种形式可能会快一点。。。它不需要带有该部分连接结果的临时字符串


另一方面,如果您执行的是数据库操作,那么差异将非常小。

您的第一个代码将执行串联,构建一个完整的字符串,然后将其附加到
StringBuilder
。假设你还要附加其他东西,第二种形式可能会快一点。。。它不需要带有该部分连接结果的临时字符串


另一方面,如果您正在执行数据库操作,差异将非常小。

字符串连接将创建新的字符串对象并复制现有值,并对旧字符串进行解压缩。显示它将是缓慢的。
检查引用

字符串连接将创建新的字符串对象并复制现有值,并解除旧字符串的锁定。显示它将是缓慢的。
检查引用

您的字符串太小了,在示例代码中使用
StringBuilder
太过分了。您的字符串太小了,在示例代码中使用
StringBuilder
太过分了。您是指AppendFormat吗?我不认为FormatAppend是StringBuilder方法。你是说AppendFormat吗?我不认为FormatAppend是StringBuilder方法。