如果随便弃用的话,字符串类型可能会很低效,因此.NET基类库提供了System.Text命名空间。在这个(相对较小的)命名空间中有一个叫做StringBuilder的类。和System.String类相似,StringBuilder定义了很多用来替换或格式化片段的方法。如果我们希望在C#代码文件中使用这个类型,第一步就是导入正确的命名空间:
// StringBuilder在这里。 |
StringBuilder的独特之处在于,当我们调用这个类型成员时,都是直接修改对象内部的字符数据(因此更高效),而不是获取按修改后格式的数据副本。当创建StringBuilder实例时,可以通过其中一个构造函数来提供对象的初始值。如果你对构造函数不是很熟悉,可以理解为构造函数允许我们在使用new关键字时使用初始状态来创建对象。如下是StringBuilder的使用:
static void FunWithStringBuilder() sb.Replace("2", "Invisible War"); |
在这里,我们构建了一个StringBuilder,并且将初始值设置为"**** Fantastic Games ****"。可以看到,我们向内部缓冲区追加数据,并且可以随意替换(或移除)字符。默认情况下,StringBuilder只能保存16个字符以下的字符串,然而,我们可以通过其他构造函数参数来改变这个初始值。
// 创建一个初始大小为256的StringBuilder。 |
如果追加的字符数超过规定的限制,StringBuilder对象会将它的数据复制到新的实例中,并根据规定的限制来扩大缓冲区。图3-14演示了当前辅助方法的输出。
图3-14 StringBuilder比string更 |
源代码 FunWithString项目的源代码位于Chapter 3子目录下。