思维的乐趣

Enjoy it
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

.NET/C#中的StringBuilder类型的基本用法

Posted on 2010-05-24 12:42  szh114  阅读(9420)  评论(0编辑  收藏  举报

StringBuilder 采用了构造器设计模式的思想高效地构造一个字符串对象,在构造过程中StringBuilder可以有效避免临时字符串对象的生成。

 

1:当需要操作很长的字符串,或者要对字符串进行非常频繁的操作时,应该使用StringBuilder,其余场合,用String比较方便。

2:之所以说平常情况用String比较方便是因为:

StringBuilder sb="hello world!";             这样的语句是不行的,要用:

StringBuilder sb=new StringBuilder("hello world!");         这样子才能初始化一个StringBuilder对象。

 

sb="change the content of StringBuilder";                     这样的语句也是不行的,不能直接把String转换成StringBuilder,显式转换也不成!

 

sb.Remove(0, sb.Length);
sb.Append("Test for string builder change!");                这样子才能改变一个StringBuilder对象的内容。或者用sb.Replace();方法。

 

3:StringBuilder类还有一个这样的特性:它的Length属性是非ReadOnly的,

假如有: StringBuilder sb=new StringBuilder("12345");

执行:    sb.Length=3;

再输出sb的内容,就只剩 123 了。如果这个Length设置大于原来的长度,那么后面补空格。

String 类型没有这个功能,它的Length是read only的!

 

“StringBuilder类内部保留了一个私有的String 类型成员,当ToString()这个方法被调用时,这个String 类型成员将会被赋值并且返回给调用者。在字符串组装期间,这个字符串会在内存上被直接修改。StringBuilderod 不仅仅提供了性能上更加优秀的字符串操作,它还能被用来和非托管代码进行交互。对于非托管的代码,字符串的操作是直接基于内存的,如果使用字符串类型和非托管的代码进行,那潜在的违反了字符串对象不可变的原则。所以StringBuilder类常常被用来和非托管代码进行交互。”