之间是否存在差异:
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] + " ( ");
在编译时解决,所以它不应该对性能产生任何影响,但我不确定
答案 0 :(得分:4)
除非listeLibelleTable[index]
确实可以在编译时解决(我非常怀疑),使用字符串连接似乎对StringBuilder
的使用起反作用。
在你的第二个例子中,你是连接一个字符串然后附加它而不是附加到StringBuilder
。
在任何一种情况下,您都应该使用AppendFormat
来提高可读性:
requete.AppendFormat(" INSERT into {0} ( ", listeLibelleTable[index]);
答案 1 :(得分:1)
您的第一个代码是执行连接,构建一个完整的字符串,然后将其附加到StringBuilder
。假设你还要附加其他东西,第二种形式可能会快一点......它不需要临时字符串和连接部分的结果。
另一方面,如果您正在执行数据库操作,那么差异将是无法估量的。
答案 2 :(得分:0)
我想这样做:
" INSERT into " + listeLibelleTable[index] + " ( "
使用更多内存来存储concat操作的结果!
答案 3 :(得分:0)
字符串连接将创建新的String对象并复制现有值,并配置旧字符串。表明它会很慢。 检查http://kaioa.com/node/59以获取参考