Unity 3D游戏开发 - C#面向对象 | 字符串操作之 StringBuilder

StringBuilder 简介

  • 字符串的缺点
    • 对一个字符串变量重复赋值时,在内存中会产生大量的垃圾数据信息。
    • 当重复赋值频率很高时,执行效率会降低。
  • StringBuilder 简介
    • String:字符串;Builder:构建器。     “字符串构建器”。
    • StringBuilder 是一个类,其类型的变量是引用类型。
    • StringBuilder 类型的 “字符串变量” ,一直操作同一块内存空间,不会产生垃圾数据,且执行效率远高于 string类型的字符串变量。

StringBuilder 使用方法

  • 创建 StringBuilder 类型的变量
    • StringBuilder sb = new StringBuilder();     //创建一个对象。
    • 注意:StringBuilder 依赖 System.Text 命名空间。
  • 往 sb 中追加数据
    • sb.Append(i);     //追加数据。
    • sb.ToString();     //将 sb 转换成字符串形式。
                  StringBuilder sb = new StringBuilder();
      
                  //单个追加数据.
                  sb.Append("Shane");
                  sb.Append(102030);
                  sb.Append(true);
      
                  //使用for循环追加数据.
                  for (int i = 0; i <= 100; i++)
                  {
                      sb.Append(i);
                  }
      
                  Console.WriteLine(sb.ToString());
      
                  Console.ReadKey();
  • 清空 sb 中的数据
    • sb.Clear();      //将 sb 清空。
      ​
                  StringBuilder sb = new StringBuilder();
      
                  //单个追加数据.
                  sb.Append("Shane");
                  sb.Append(102030);
                  sb.Append(true);
      
                  //使用for循环追加数据.
                  for (int i = 0; i <= 100; i++)
                  {
                      sb.Append(i);
                  }
      
                  Console.WriteLine(sb.ToString());
                  sb.Clear();                               
                  Console.WriteLine(sb.ToString());         //清空.
      
                  Console.ReadKey();
      
      ​

StringBuilder 效率测试

  •  Stopwatch 类
    • 秒表计时器,用来记录程序运行时间。
    • 注意:Stopwatch 依赖 System.Diagnostics 命名空间。
  • 创建 Stopwatch 类型对象
    • Stopwatch sw = new Stopwatch();
    • sw.Start();     //计时器开始.
    • sw.Stop();     //计时器结束.
    • sw.Elapsed;     //开始到结束之间的时长.
                  Stopwatch sw = new Stopwatch();        //要在前面添加命名空间.
                  sw.Start();
      
                  StringBuilder sb = new StringBuilder();
                  sb.Append("Shane");
                  sb.Append(102030);
                  sb.Append(true);
      
                  for (int i = 0; i <= 100; i++)
                  {
                      sb.Append(i);
                  }
      
                  Console.WriteLine(sb.ToString());
                  sw.Stop();
                  Console.WriteLine(sw.Elapsed);
      
                  Console.ReadKey();
  • 效率测试
    • 使用 for 循环分别往 string 和 StringBuilder 中追加5万个信息,统计时长。
                  Stopwatch sw = new Stopwatch();
                  sw.Start();
      
                  string names = "";
                  for (int i = 0; i <= 50000; i++)
                  {
                      names += i;
                  }
      
                  sw.Stop();
                  Console.WriteLine(sw.Elapsed);      //1.7秒多.
      
                  Stopwatch sw_2 = new Stopwatch();
                  sw_2.Start();
      
                  StringBuilder sb = new StringBuilder();
                  for (int i = 0; i <= 50000; i++)
                  {
                      sb.Append(i);
                  }
      
                  sw_2.Stop();
                  Console.WriteLine(sw_2.Elapsed);    //不到1秒.
                  
                  Console.ReadKey();
  • 思维扩展
    • “秒表计时” 判断代码在时间上的执行效率,在后期需要测试执行效率时可以使用。

猜你喜欢

转载自blog.csdn.net/weixin_41232641/article/details/82555986