欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

深入理解StringBuilder的使用方法

程序员文章站 2023-11-18 22:08:28
今天用到了stringbuilder来拼接查询语句,发现这个真好用,决定做个小结。 百度一个stringbuilder的定义:string 对象是不可改变的。每次使用 s...

今天用到了stringbuilder来拼接查询语句,发现这个真好用,决定做个小结。

百度一个stringbuilder的定义:string 对象是不可改变的。每次使用 system.string 类中的方法之一时,都要在内存中创建一个新的字符串对象,这就需要为该新对象分配新的空间。在需要对字符串执行重复修改的情况下,与创建新的 string 对象相关的系统开销可能会非常昂贵。如果要修改字符串而不创建新的对象,则可以使用 system.text.stringbuilder 类。

主要是stringbuilder的append()方法和capacity属性。

注意当capacity小于length时,capacity是以2倍的方式来扩充的。

using system;
using system.collections.generic;
using system.linq;
using system.text;
using system.threading.tasks;

namespace stringbuilder的使用
{
  class program
  {
    static void main(string[] args)
    {
      stringbuilder s = new stringbuilder();
      long datastart = datetime.now.ticks;
      for (int i = 0; i < 1000; i++)
      {
        s.append('a', i);
      }
      long dataend = datetime.now.ticks;
      console.writeline(s.capacity);
      console.writeline("用时:{0}", (dataend - datastart) / 100000.0);
      datastart = datetime.now.ticks;
      for (int i = 0; i < 1000; i++)
      {
        s.append('a', i);
        if (s.capacity < s.length)
        {
          s.capacity += 8;
        }
      }
      dataend = datetime.now.ticks;
      console.writeline("用时:{0}", (dataend - datastart) / 100000.0);
      console.read();
    }
  }
}

输出结果:

深入理解StringBuilder的使用方法

以上这篇深入理解stringbuilder的使用方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。