本文共 2277 字,大约阅读时间需要 7 分钟。
StringBuilder到底是是什么。我这里先不说,先说说咱们熟悉的string。
String就是我们常说的字符串类。但是string类是不可变的,据官方报道,对string类的任何改变,都会返回一个新的string类对象。也就是说,我们每次使用string类中的方法改变字符串时,就要在内存中创建一个新的字符串对象,即需要为新的字符串对象分配新的空间。当我们需要大量的修改字符串时,就会造成一大部分的内存开销,从而浪费的宝贵的内存空间。为此stringBuilder就从一定程度上解决了这样的问题,当修改字符串的时候,他不需要重新创建对象,从而提升了性能。
既然string类创建字符串使用起来非常 的方便,那么stringBuiler使用起来也不会难道哪里去。它仅仅需要一个重载一个构造函数,既可以初始化创建一个stringBuilder实例。如下:
StringBuilder strB = new StringBuilder("Howare you !");
之所以上面说stringBuilder类在字符串改变时不会创建新的对象,是因为stringBuilder是动态分配内存的。也正是因为其是动态分配内存,所以在创建stringBuilder对象时最好为其设置好字符串容量大小。这样的话可以免去计算机计算其需要分配的内存,节省了计算时间,提高效率。
Ps:我们这里的容量和字符串的长度是有点区别的。
例如,在我们创建stringBuilder对象时,字符串“howare you !”长度是13,但是我们可以为stringBuilder创建一个25的容量。当修改后的字符串不到25时,这个对象不会重新分配空间,但是修改的字符串超过25时,其自动将空间翻倍。可以使用stringBuilder的另一个构造函数来解决。
stringBuilderstrB =new stringBuilder(”How are you !” , 25);
另外后期可以使用stringBuilder的capacity属性来修改,这里不再累述。
StringBuilder strB = newStringBuilder("How are you !");StrB.Append("I am fine!");Console.WriteLine(StrB);
此示例将How are you ! I am fine! 显示在窗体上。
int MyInt = 25;StringBuilderstrB = newStringBuilder("Your total is ");StrB.AppendFormat("{0:C} ",MyInt);Console.WriteLine(StrB);
此示例将 Your total is $25.00 显示在窗体上。
StringBuilderstrB = newStringBuilder("Hello World!");StrB.Insert(6,"Beautiful ");Console.WriteLine(StrB);
此示例将 Hello Beautiful World! 显示在窗体上。
StringBuilderstrB = newStringBuilder("Hello World!");StrB.Remove(5,7);Console.WriteLine(StrB);
此示例将 Hello 显示在窗体上。
StringBuilder strB = newStringBuilder("Hello World!");StrB.Replace('!', '?');Console.WriteLine(StrB);
此示例将 Hello World? 显示在窗体上
相比之下,stringBuilder的用法和string类的用法是完全一样的。所以无需刻意去学习。
转载地址:http://zshbb.baihongyu.com/