字符串应该是所有编程语言中使用最频繁的一种基础数据类型。使用不慎就会为字符串操作所带来的额外开销而付出代价,下面从2个方面来探讨如何规避这类额外的性能开销
1、 确保尽量少的装箱
在使用其他值引用类型到字符串转换时,需要拼接时,应当避免使用操作符“+”来完成,使用引用类型提供的ToString方法。
2、 避免分配额外的内存空间
String对象是一个特殊的对象,它一旦被赋值就不可改变,调用System.String类中的任何方法或进行任何运算,都会在内存中创建一个新的字符串对象,也就意味着要为该对象分配新的内存空间。
如何避免?
使用Stringbuilder
Stringbuilder不会重新创建string对象,默认分配的长度是16,如果Stringbuilder字符小于或等于16,Stringbuilder不会重新分配内存,当Stringbuilder字符长度大于16小于32时,Stringbuilder又会重新分配内存,使之成为16的倍数。Stringbuilder重新分配内存是按照上次的容量加倍进行分配的。
使用String.Format
string.format在内部使用Stringbuilder进行字符串格式化。