System.Text.StringBuilder类型

Posted on 2010-01-09 15:34  saysay,looklook  阅读(3741)  评论(0编辑  收藏  举报

如果随便弃用的话,字符串类型可能会很低效,因此.NET基类库提供了System.Text命名空间。在这个(相对较小的)命名空间中有一个叫做StringBuilder的类。和System.String类相似,StringBuilder定义了很多用来替换或格式化片段的方法。如果我们希望在C#代码文件中使用这个类型,第一步就是导入正确的命名空间:

// StringBuilder在这里。
using System.Text;

StringBuilder的独特之处在于,当我们调用这个类型成员时,都是直接修改对象内部的字符数据(因此更高效),而不是获取按修改后格式的数据副本。当创建StringBuilder实例时,可以通过其中一个构造函数来提供对象的初始值。如果你对构造函数不是很熟悉,可以理解为构造函数允许我们在使用new关键字时使用初始状态来创建对象。如下是StringBuilder的使用:

static void FunWithStringBuilder()
{
Console.WriteLine("=> Using the StringBuilder:");
StringBuilder sb = new StringBuilder("**** Fantastic Games ****");
sb.Append("\n");
sb.AppendLine("Half Life");
sb.AppendLine("Beyond Good and Evil");
sb.AppendLine("Deus Ex 2");
sb.AppendLine("System Shock");
Console.WriteLine(sb.ToString());
 sb.Replace("2", "Invisible War");
Console.WriteLine(sb.ToString());
Console.WriteLine("sb as {0} chars.", sb.Length);
Console.WriteLine();
}

在这里,我们构建了一个StringBuilder,并且将初始值设置为"**** Fantastic Games ****"。可以看到,我们向内部缓冲区追加数据,并且可以随意替换(或移除)字符。默认情况下,StringBuilder只能保存16个字符以下的字符串,然而,我们可以通过其他构造函数参数来改变这个初始值。

// 创建一个初始大小为256的StringBuilder。
StringBuilder sb = new StringBuilder("**** Fantastic Games
****", 256);

如果追加的字符数超过规定的限制,StringBuilder对象会将它的数据复制到新的实例中,并根据规定的限制来扩大缓冲区。图3-14演示了当前辅助方法的输出。

 
图3-14  StringBuilder比string更

源代码 FunWithString项目的源代码位于Chapter 3子目录下。

Copyright © 2024 saysay,looklook
Powered by .NET 9.0 on Kubernetes