String和StringBulider的区别

今天分析petshop的时候,遇到StringBulider,对这个概念比较模糊,下面结合MSDN和自己对两者的理解说下

大家都知道String对象是不可变的,它有固定长度,每次使用它的时候,我们都要从内存中重新分配空间给他,如果我们重复修改它,那么内存开销是比较大的

比如
string x= "" ;
x = "a" + "b" + "c"  ;

最后x的值为"abc",其实这个x已经不是原来的那个x,内存已经为它重新分配了空间

如果我们要修改字符串而不创建新的对象,则可以使用 。例如,当在一个循环中将许多字符串连接在一起时,使用 StringBuilder 类可以提升性能。

虽然 StringBuilder 对象是动态对象,允许扩充它所封装的字符串中字符的数量,但是您可以为它可容纳的最大字符数指定一个值。此值称为该对象的容量,不应将它与当前 StringBuilder 对象容纳的字符串长度混淆在一起。例如,可以创建 StringBuilder 类的带有字符串“Hello”(长度为 5)的一个新实例,同时可以指定该对象的最大容量为 25。当修改 StringBuilder 时,在达到容量之前,它不会为其自己重新分配空间。当达到容量时,将自动分配新的空间且容量翻倍。可以使用重载的构造函数之一来指定 StringBuilder 类的容量。下面的示例指定可以将 MyStringBuilder 对象扩充到最大 25 个空白。

比如:
StringBuilder MyStringBuilder = new StringBuilder("Hello World!", 25); 

我们也可以通过 属性来设置对象的最大长度

比如:
MyStringBuilder.Capacity = 25;

转载于:https://www.cnblogs.com/songzibin/archive/2008/07/18/1245911.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值