string 与stringbuilder 区别我知道了但是为什么有两个呢?为什么不是只用stringbuild。为什么不只用string 为什么会设计两个。。什么时候用哪个?好处? 求解啊求解

解决方案 »

  1.   

    stringbuilder 做字符串拼接 比用 string  拼接要快些
    string 可以当值类型或者引用类型 试用
      

  2.   

    在.NET中String是不可改变对象,一旦创建了一个String对象并为它赋值,它就不可能再改变,也就是不可能改变一个字符串的值。
    String类型在做字符串的连接操作时,效率是相当低的,并且由于每做一个连接操作,都会在内存中创建一个新的对象,占用了大量的内存空间。
    这样就引出StringBuilder对象,StringBuilder对象在做字符串连接操作时是在原来的字符串上进行修改,改善了性能。这一点我们平时使用中也许都知道,连接操作频繁的时候,使用StringBuilder对象。
      

  3.   


    baidu了。都说stringbuiler好,性能高。。我就想那还要string干什么
      

  4.   

    stringbuilder值类型或者引用类型 也可以吧
      

  5.   

    stringbuilder是用来build string的,string都没了,还要builder干啥
      

  6.   

    string 是老祖宗,stringbuilder是作了优化的string
      

  7.   

    这个比喻好。
    嘿嘿。string 的时候每次都是分配新内存,而做字符串拼接的时候stringbuild 是直接在原有内存上扩展的
      

  8.   

    stringbuilder做字符拼接更加方便
      

  9.   

    因为很多时候根本不需要使用 stringbuilder。比如说你写s= a + b;这还用得着多写好几行代码、转换到什么StringBuilder,然后再传唤回来?还有很多时候,程序员注重的是对结果的控制。比如说你测试出两者的差别对于你的程序的价值的影响不值一毛钱,你就没有必要为了死抠这一毛钱的差别去不断地把精力耗在去读各种程序各个代码“规范”这个东西上。你不用注意它,不是因为不懂它的差别,而是因为你有更有价值的东西需要抢着去做。
      

  10.   


     static void Main(string[] args)
            {
                useStringBulider();
               // useString();
            }
            
            static void useStringBulider()
            {
                StringBuilder sb = new StringBuilder();
                for (int i = 0; i < 99999; i++)
                {
                    sb = sb.Append(i);
                }
                Console.WriteLine(sb);
            }        static void useString()
            {
                string s = string.Empty;
                for (int i = 0; i < 99999; i++)
                {
                    s += i;
                }
                Console.WriteLine(s);
            }
    运行上面的代码,分别调用这两个方法,什么都不用说你应该就明白了