StringBuilder类2
你也许会怀疑使用StringBuilder的是否比使用String数据类型更加有效。答案是否——至少现在还不。如果像这样写,StringBuilder的例子并没有更加有效率,因为系统必须重新分配内存以容纳添加到初始化文本末端的新文本。StringBuilder的初始长度是按照所赋的值来设定的。要使代码更加有效,可以使用 Capacity属性来分配足够的内存一处理最终的值,而不用重新分配内存和使得系统变慢。Capacity属性设置了为字符串值所分配的字符数。下面重写前面的代码,从一开始就保留了足够的内存:
VB.NET
Dim sb As New StringBuilder()
sb.Capacity=18
sb.Append(“Builder.com”)
sb.Append(“Rules!”)
C#
StringBuilder sb=new StringBuilder();
sb.Capacity=18;
sb.Append(“Builder.com”);
sb.Append(“Rules!”);
代码从开始就分配了许多内存,因此没有重新分配内存的必要(除非超过了容量)。除了使用Capacity属性分配指定字符数的内存外,还可以使用MaxCapacity属性来设置对象的最大容量。
经常容易与Capacity属性混淆的是Length。Length属性返回字符串值的当前大小,也可设置它来截断或扩展字符串的长度。将长度设置得小于当前值会将字符串截为所设置的长度。下面的代码将初始值截断为“Builder.com”:
VB.NET
Dim sb As New StringBuilder(“Builder.com Rules!”)
sb.Length=11
System.Console.Writeln(sb.ToString())
C#
StringBuilder sb=new StringBuilder(“Builder.com Rules!”);
sb.Length=11;
System.Console.WriteLine(sb.ToString());
