String 或 StringBuilder 对象的串联操作的性能取决于内存分配的发生频率。String 串联操作每次都分配内存,而 StringBuilder 串联操作仅当 StringBuilder 对象缓冲区太小而无法容纳新数据时才分配内存。因此,如果串联固定数量的 String 对象,则 String 类更适合串联操作。这种情况下,编译器甚至会将各个串联操作组合到一个操作中。如果串联任意数量的字符串,则 StringBuilder 对象更适合串联操作;例如,某个循环对用户输入的任意数量的字符串进行串联。
msdn上看到的,没看懂,有人能解释一下不!
msdn上看到的,没看懂,有人能解释一下不!
这个问题也快成月经帖了如果字符串不用拼接多次当然是用string如果字符串需要大量的拼接那请使用stringbuilder原因:String类型对象,一旦创建其值,再修改,新值会重新申请内存空间,存在新的内存空间中.... stringbuilder不需要重新申请新的内存空间.
可以自己实验一下,做个几万次的循环,string和stringbuilder两种各用的时间。
String拼接字符串内部做了什么,怎么解决?
为什么NET有了String 还要加入StringBuilder?
String的特点是什么,对于多字符串拼接你会怎么做?
....
String strResult = str1 + str2 + str3 + str4 + str5;
--编译器优化使用StringBuilder:
StringBulider strBuilder = new StringBuilder(str1);
...
strBuilder.Append(str2);
...
strBuilder.Append(str3);
...
strBuilder.Append(str4);
...
strBuilder.Append(str5);
而如果用stringbuilder,需要自己手动计算总长度,不然stringbuilder在每次空间满的时候都需要重新分配(貌似是每次翻倍)