对于需要频繁修改字符串的场景,建议使用StringBuilder
类以提升性能。
StringBuilder
可以理解为可变的字符串。本质上,它是由多块字符串组成的动态缓冲区,而非像string
那样每次修改都生成新的对象。
由于StringBuilder
不会因为字符串的修改而重新分配内存,频繁修改字符串的场景下(例如日志记录、文本处理等)应优先考虑使用。
常用操作
1 | /* 实例化 */ |
容量管理
StringBuilder
的Capacity
属性控制其底层缓冲区的大小。与List<T>
类似,StringBuilder
的容量会在内容超过当前容量时扩容。
默认容量
StringBuilder
的默认初始容量为 16 字节。当添加的内容超过容量时,StringBuilder
会自动扩容,一般是翻倍(16, 32, 64)。
也可以手动设置其初始容量,之后也会根据该初始容量翻倍。
1 | var stringBuilder = new StringBuilder("Test"); |
最大容量
可以在实例化StringBuilder
时指定最大容量(maxCapacity
)以限制其内存占用。如果超过最大容量,StringBuilder
将抛出 ArgumentOutOfRangeException
异常。
1 | var stringBuilder = new StringBuilder(20, 40); // 初始容量为 20,最大容量为 40 |