C#-可变字符串StringBuilder类与String类

文章一览

  • StringBuilder概述
    • 1、定义
    • 2、使用
  • StringBuilder类与String类的区别

StringBuilder概述

对于创建成功的字符串对象,其长度是固定的,内容不能被改变和编译。
虽然使用“+”可达到附加的目的,但会产生一个新的String实例,在内存中创建新的字符串对象,如果重复的进行修改,将极大的增加系统开销。
StringBuilder可变字符串则是为了解决这一问题。

1、定义

StringBuilder类有6种不同的构造方法,最常用的如下:

public StringBuilder(string value,int cap)

value:StringBuilder对象引用的字符串;
cap:设定StringBuilder对象的初始大小(容量上限)
例如:

StringBuilder myStringBuilder = new StringBuilder("Hello World");

StringBuilder类会通过追加、移除、替换或插入字符而创建它后可以对它进行修改。

2、使用

StringBuilder类存在于System.Text命名空间中,如果要创建StringBuilder对象,首先必须引用此命名空间。StringBuilder类中常用的方法如下:

方法 说明
Append 将文本或字符串追加到指定对象的末尾
AppendFormat 自定义变量的格式并将这些值追加到StringBuilder对象的末尾
Insert 将字符串或对象添加到当前StringBuilder对象的指定位置
Remove 从当前StringBuilder对象中移除指定数量的字符
Replace 用另一个指定的字符来替换StringBuilder对象内的字符
            int num = 1000;
            StringBuilder str = new StringBuilder("荣耀自称科技标杆");
            //追加
            str.Append("vs 小米死磕高性价比");
            Console.WriteLine($"追加后的字符串:{str}");
            Console.WriteLine();
            //格式化追加
            str.AppendFormat("{0:C}", num);
            Console.WriteLine($"格式化追加后的字符串:{str}");
            Console.WriteLine();
            //添加
            str.Insert(0, "PK:");
            Console.WriteLine($"添加后的字符串:{str}");
            Console.WriteLine();
            //移除
            str.Remove(str.Length - 9, 9);
            Console.WriteLine($"移除后的字符串:{str}");
            Console.WriteLine();
            //替换
            str.Replace("PK", "相爱相杀");
            Console.WriteLine($"替换后的字符串:{str}");
            Console.WriteLine();
            Console.ReadLine();

运行结果:
C#-可变字符串StringBuilder类与String类_第1张图片

StringBuilder类与String类的区别

String对象是不可改变的,每次使用String类中的方法时,都要在内存中创建一个新的字符串对象,这就需要为该新对象分配新的空间。
如果字符串需要执行重复修改的情况下,可能相关的系统开销会比较庞大;在只修改字符串内容的情况下,使用StringBuilder类的执行效率会更高。

验证:

            string str = "";
            //定义字符串执行操作的起始时间
            long startTime = DateTime.Now.Millisecond;
            for (int i = 0; i < 10000; i++)
            {
                str += i;
            }
            long endTime = DateTime.Now.Millisecond;
            long time = endTime - startTime;
            Console.WriteLine($"String类执行操作时间:{time}");

            StringBuilder str2 = new StringBuilder("");
            long startTime2 = DateTime.Now.Millisecond;
            for (int i = 0; i < 10000; i++)
            {
                str2.Append(i);
            }
            long endTime2 = DateTime.Now.Millisecond;
            long time2 = endTime2 - startTime2;
            Console.WriteLine($"StringBuilder类执行操作时间:{time2}");
            Console.ReadLine();

运行效果:
C#-可变字符串StringBuilder类与String类_第2张图片

你可能感兴趣的:(C#宝典,c#)