StringBuilder,两种语法之间的差异

本文关键字:之间 语法 两种 StringBuilder | 更新日期: 2023-09-27 17:58:32

之间有区别吗

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

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

当我说"差异"时,我指的是性能,例如,如果这段代码处于循环中。

我认为这些线路

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

是在编译时解决的,所以它对性能不会有任何影响,但我不确定

StringBuilder,两种语法之间的差异

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

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

在任何一种情况下,为了可读性,您可能都应该使用AppendFormat

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

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

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

我认为这样做:

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

您需要更多的内存来存储concat操作的结果!

字符串串联将创建新的String对象并复制现有值,并解压缩旧字符串。显示它将是缓慢的。检查http://kaioa.com/node/59供参考