C#中stringBuilder和string的区别

What?

             string 是字符串常量

        stringBuffer 是字符串变量(线程安全)

        stringBuilder 是字符串变量(非线程安全)

HOW?

           如果看了上面的解释有些不明白的话,那就继续往下看吧,下面的故事更精彩~

1、string

         string是一个不可变的字符串,每次对string类型进行运算(赋值或拼接)的时候其实相当于重新生成了一个新的string对象,然后指针指向了新的string对象,会对系统的性能产生影响,不适合大量、频繁字符串的拼接。

      

                  string s1 = "hi~";
            string s2="I'm Elsa";
            string s = s1 + s2;
            label1.Text = s;
        效果:

      

2、StringBuilder


       stringBuilder提供 Append方法,能在已有对象的原地进行字符串的修改,一般情况下看不出和string有和差异,但是如果对大量字符串进行添加操作,stringbuilder耗费的时间比string少的多。


            StringBuilder frist = new StringBuilder();
            frist.Append("select * from tableA");
            frist.Append(" as fristline");
            StringBuilder next = new StringBuilder();
            next.Append(" AND select * from tableB");
            string query = frist.Append(next).ToString();
            label1.Text = query;
       除了append的方法,还有其他方法:

       StringBuilder.Append   将信息追加到当前   StringBuilder   的结尾。      
       StringBuilder.AppendFormat   用带格式文本替换字符串中传递的格式说明符。     
       StringBuilder.Insert   将字符串或对象插入到当前   StringBuilder   对象的指定索引处。     
       StringBuilder.Remove   从当前   StringBuilder   对象中移除指定数量的字符。     
       StringBuilder.Replace   替换指定索引处的指定字符。  

         

       其实还有一个stringBuffer,可将字符串缓冲区安全的用于多个线程,可以在必要时同步,所以操作就像是以串行顺序发生,该顺序与所涉及到的每个线程进行的方法调用一致。


      他们三者的优先使用顺序:stringBuilder(快)>stringBuffer>string


小结:

      多多了解,还要高效的去做!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值