编写高质量的代码1-尽量使用StringBuilder

       对CLR来说,string对象是个比较特殊的对象,它一旦被赋值就不可改变。运行时调用String类中的任何方法或进行任何运算(如”=”赋值、“+”拼接等),都会在内存中创建一个新的字符串对象,这也意味着要为该新对象分配新的内存空间。

StringBuilder并不会创建一个新的string对象,StringBuilder的默认长度是16,当长度大于16时,则重新分配内存,长度是16的倍数。StringBuilder重新分配内存时是按照上次容量加倍进行分配的。需要注意的是,如果指定的长度太小,需要频繁分配内存,太大了则浪费空间。

测试代码如下

       private void stringContact()
       {
           string s = "ddd";
           s += "eee";
           s += "fff";
           s += "ggg";
           s += "hhh";
       }
       StringBuilder strb = new StringBuilder();
       private void stringContact2()
       {
           strb.Clear();
           strb.Append("ddd");
           strb.Append("eee");
           strb.Append("fff");
           strb.Append("ggg");
           strb.Append("hhh");
       }

 

测试结果

image

posted @ 2012-06-05 21:35  liuyh208  阅读(183)  评论(0编辑  收藏  举报