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] + " ( ");
是在编译时解决的,所以它对性能不会有任何影响,但我不确定
除非listeLibelleTable[index]
确实可以在编译时解析(我对此深表怀疑),否则使用字符串串联似乎与使用StringBuilder
相反。
在第二个示例中,您将连接一个字符串,然后将其追加,而不是追加到StringBuilder
。
在任何一种情况下,为了可读性,您可能都应该使用AppendFormat
:
requete.AppendFormat(" INSERT into {0} ( ", listeLibelleTable[index]);
您的第一个代码是执行串联,构建一个完整的字符串,然后将其附加到StringBuilder
。假设您还将附加其他内容,第二种形式可能会快一点。。。它不需要带有该部分串联结果的临时字符串。
另一方面,如果您正在执行数据库操作,则差异将非常小。
我认为这样做:
" INSERT into " + listeLibelleTable[index] + " ( "
您需要更多的内存来存储concat操作的结果!
字符串串联将创建新的String对象并复制现有值,并解压缩旧字符串。显示它将是缓慢的。检查http://kaioa.com/node/59供参考