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方法。