这是我自己总结的关于StringBuilder的笔记:
System.Text.StringBuilder 和 System.String 很相似,它们都定义了很多用来替换或格式化片段的方法。
System.Text.StringBuilder 的独特之处在于,当我们调用这个类型的成员时,都是直接修改对象内部的字符数据(因此更高效),而不是获得修改后格式的数据副本。
另外,string支持深复制,而StringBuilder支持的是浅复制。
如果我们正在构建使用大量文本数据的应用程序(如字处理程序),应该使用 System.Text.StringBuilder 而不是 System.String
- /// <summary>
- /// 使用System.Text.StringBuilder创建字符串
- /// </summary>
- private static void FunWithStringBuilder()
- {
- Console.WriteLine("=> Using the StringBuilder:");
- // 默认情况下,StringBuilder的实例只能保持16个字符以下的字符串,
- // 如果追加的字符数超过规定的限制,StringBuilder的实例会自动将它的数据复制到新的实例中,并根据规定的限制来扩大缓冲区
- // 我们可以向内部缓冲区追加数据,并且随意替换(或移除)字符
- // 创建 StringBuilder实例
- StringBuilder sb = new StringBuilder("****** Fantastic Games ******");
- //编译错误!无法将string隐式转换为System.Text.StringBuilder。
- //StringBuilder sb3 = "****** Fantastic Games ******";
- // 在 StringBuilder实例追加指定字符串的副本
- sb.Append("\n");
- sb.AppendLine("Half Life");
- sb.AppendLine("Morrowind");
- sb.AppendLine("Deus Ex " + " 2");
- sb.AppendLine("System Shock");
- Console.WriteLine(sb);
- sb.Replace("2", "Invisible War"); // 把sb中的"2"替换为"Invisible War"
- Console.WriteLine(sb);
- Console.WriteLine("sb has {0} chars.", sb.Length);
-
- // 通过其他构造函数来创建一个初始大小为256的StringBuilder
- StringBuilder sb2 = new StringBuilder("****** Fantastic Games ******", 256);
- }
复制代码
|