StringBuilder:
此类表示值为可变字符序列的类似字符串的对象。之所以说值是可变的,是因为在通过追加、移除、替换或插入字符而创建它后可以对它进行修改。有关比较,请参见 String 类。
大多数修改此类的实例的方法都返回对同一实例的引用。由于返回的是对实例的引用,因此可以调用该引用的方法或属性。如果想要编写将连续操作依次连接起来的单个语句,这将很方便。
StringBuilder 的容量是实例在任何给定时间可存储的最大字符数,并且大于或等于实例值的字符串表示形式的长度。容量可通过 Capacity 属性或 EnsureCapacity 方法来增加或减少,但它不能小于 Length 属性的值。
如果在初始化 StringBuilder 的实例时没有指定容量或最大容量,则使用特定于实现的默认值。
性能注意事项
Concat 和 AppendFormat 方法都将新数据串连到一个现有的 String 或 StringBuilder 对象。String 对象串联操作总是用现有字符串和新数据创建新的对象。StringBuilder 对象维护一个缓冲区,以便容纳新数据的串联。如果有足够的空间,新数据将被追加到缓冲区的末尾;否则,将分配一个新的、更大的缓冲区,原始缓冲区中的数据被复制到新的缓冲区,然后将新数据追加到新的缓冲区。
String 或 StringBuilder 对象的串联操作的性能取决于内存分配的发生频率。String 串联操作每次都分配内存,而 StringBuilder 串联操作仅当 StringBuilder 对象缓冲区太小而无法容纳新数据时才分配内存。因此,如果串联固定数量的 String 对象,则 String 类更适合串联操作。这种情况下,编译器甚至会将各个串联操作组合到一个操作中。如果串联任意数量的字符串,则 StringBuilder 对象更适合串联操作;例如,某个循环对用户输入的任意数量的字符串进行串联。
给实现者的说明 此实现的默认容量是 16,默认的最大容量是 Int32.MaxValue。 当实例值增大时,StringBuilder 可按存储字符的需要分配更多的内存,同时对容量进行相应的调整。分配的内存量是特定于实现的,而且如果所需内存量大于最大容量,会引发 ArgumentOutOfRangeException。 例如,Append、AppendFormat、EnsureCapacity、Insert 和 Replace 方法能增大实例的值。 通过 Chars 属性可以访问 StringBuilder 的值中的单个字符。索引位置从零开始。
公共构造函数
名称 | 说明 | |
---|---|---|
![]() ![]() | Capacity | 获取或设置可包含在当前实例所分配的内存中的最大字符数。 |
![]() ![]() | Chars | 获取或设置此实例中指定字符位置处的字符。 |
![]() ![]() | Length | 获取或设置当前 StringBuilder 对象的长度。 |
![]() | MaxCapacity | 获取此实例的最大容量。 |
名称 | 说明 | |
---|---|---|
![]() ![]() | Append | 已重载。 在此实例的结尾追加指定对象的字符串表示形式。 |
![]() ![]() | AppendFormat | 已重载。 向此实例追加包含零个或更多格式规范的格式化字符串。每个格式规范由相应对象参数的字符串表示形式替换。 |
![]() | AppendLine | 已重载。 将默认的行终止符(或指定字符串的副本和默认的行终止符)追加到此实例的末尾。 |
![]() | CopyTo | 将此实例的指定段中的字符复制到目标 Char 数组的指定段中。 |
![]() ![]() | EnsureCapacity | 确保 StringBuilder 的此实例的容量至少是指定值。 |
![]() ![]() | Equals | 已重载。 返回一个值,该值指示此实例是否与指定的对象相等。 |
![]() ![]() | GetHashCode | 用作特定类型的哈希函数。GetHashCode 适合在哈希算法和数据结构(如哈希表)中使用。 (从 Object 继承。) |
![]() ![]() | GetType | 获取当前实例的 Type。 (从 Object 继承。) |
![]() ![]() | Insert | 已重载。 将指定对象的字符串表示形式插入到此实例中的指定字符位置。 |
![]() ![]() ![]() | ReferenceEquals | 确定指定的 Object 实例是否是相同的实例。 (从 Object 继承。) |
![]() ![]() | Remove | 将指定范围的字符从此实例中移除。 |
![]() ![]() | Replace | 已重载。 将此实例中所有的指定字符或字符串替换为其他的指定字符或字符串。 |
![]() ![]() | ToString | 已重载。 已重写。 将 StringBuilder 的值转换为 String。 |
名称 | 说明 | |
---|---|---|
![]() ![]() | System.Runtime.Serialization.ISerializable.GetObjectData | 用反序列化当前 StringBuilder 对象所需的数据填充 System.Runtime.Serialization.SerializationInfo 对象。 |