黑马程序员--string和StringBuilder的区别

---------------------- Windows Phone 7手机开发.Net培训、期待与您交流! ----------------------


1、操作上

    string对象是不变,怎么去理解这个“不变”呢,不变也就是内存中的长度是不变的!

    例如:

       string str="a";

       str=str+"b";

     代码解析:声明一个str对象值是a,第二行的时候本身加上b,此时CLR在进行内存操作的时候,并没有将str原有的长度变长然后附加上b值,而是重新声明一个对象(从新在内存中开辟一片不变的空间存放第二句的操作),第一句声明的对象str将被丢弃!

    StringBuilder是可变的,也是专门对字符串进行操作的类!

    例如:

    StringBuilder sb=new StringBuilder("a");

    sb.Append("b");

     StringBuilder在内部有一个足够长的字符数组用于存放字符串对象,当字符串超过数组的长度的时候,将会自动创建一个更长的数据,然后把原来的数据复制到新数组中,没有超过的话就始终操作同一个字符串数组!


2、操作性能上的比较

   内存都是昂贵的,当然我说的不是价格,是程序在运行中内存需求!

   当使用string的时候,频繁的操作字符串,就会不断的分配新的内存,然后进行操作,而StringBuilder就不会,所以在日常开发的时候,要进行对字符串进行频繁的操作的时候就考虑使用StringBuilder而不是使用string来进行频繁的操作字符串!

   

---------------------- Windows Phone 7手机开发.Net培训、期待与您交流! ----------------------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值