• 30
  • 1月

刚刚突然想起这个问题:为什么书上的代码在连接字符串时往往是使用一个StringBuider的对象,而不是常见的string。查了一下MSDN,终于明白是怎么回事了。
以下是MSDN上的原文:
String 对象是不可改变的。每次使用 System.String 类中的方法之一时,都要在内存中创建一个新的字符串对象,这就需要为该新对象分配新的空间。在需要对字符串执行重复修改的情况下,与创建新的 String 对象相关的系统开销可能会非常昂贵。如果要修改字符串而不创建新的对象,则可以使用 System.Text.StringBuilder 类。例如,当在一个循环中将许多字符串连接在一起时,使用 StringBuilder 类可以提升性能。

StringBuider还可以通过构造函数传入或设置Capacity属性来指定它的容量。不过这里的容量并不是指它 的最大长度,实际上是存储空间的分配增量。它的意思与当初学数据结构时,“线性表的顺序表示和实现”那部分讲用数组存储线性表时定义的那个增量一致:初始 申请该属性大小的内存空间,在内容的长度在此大小内变化时就不需要进行申请或释放内存的操作,当内容长度大于该属性值时,申请一块比目前空间大 Capacity的空间,将现有数据复制进去,释放原始空间进行操作。
以上是个人理解,尚未经过验证。

标签:

您可以对这篇文章发表一条评论,或者在您自己的网站中引用 (Trackback) 它

发表一条评论

所有标签:.net Ajax Java javascript Linux map MySQL RSS TD-SCDMA Ubuntu vim web Win7 乱码 基础知识 备份 奥运会 希望泉 性能 缓存 编程