1、字符串的操作

来源:互联网 发布:网络安全法的特点 编辑:程序博客网 时间:2024/06/06 20:08

对于CLR来说,string对象是很特殊,一旦它被赋值后将无法改变。在运行时调用System.String类中的任何运算,都会在内存中创建一个新的字符串对象,这也意味着要为该对象分配新的内存空间。

原则:

1、确保尽量少的装箱;

2、避免分配额外的内存空间;


装箱的性能损耗:

1、首先,会为值类型在托管堆中分配内存。除了值类型本身所分配的内存外,内存总量还要加上类型对象指针和同步块索引所占用的内存;

2、将值类型的值赋值到新分配的堆内存中;

3、返回已经成为引用类型的对象的地址。


注意:在使用其他值引用类型到字符串的转换并完成拼接时,应避免使用操作符“+”来完成,而应该使用值引用类型提供的ToString方法。前者调用String::Contact(object,object),该方法存在一个到object类型的装箱过程;而后者调用String::Contact(String,String)方法完成拼接。

当字符串拼接次数过多时,建议使用StringBuilder类来操作字符串,其效率源自于非托管的方式分配内存。

0 0
原创粉丝点击