You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

性能最优的StringBuilder实例复制实现方法是什么?

高性能拷贝StringBuilder的可行方案

我们按你使用的.NET运行环境版本分两种实现方式,都不会产生中间不可变字符串,完全满足大数据量场景的性能要求:

1. .NET Core 2.1 / .NET Standard 2.1 / .NET 5及以上版本

你期望的写法已经被原生支持,直接使用即可:

StringBuilder newSB = new StringBuilder(oldSB);

底层实现直接拷贝原实例的内部字符缓冲区,无额外开销,性能最优。

2. .NET Framework 或低版本.NET Core

使用预分配容量+Append重载的方式实现:

// 先按原实例长度预分配容量,避免动态扩容损耗
StringBuilder newSB = new StringBuilder(oldSB.Length);
// 直接追加原StringBuilder实例,不会生成中间字符串
newSB.Append(oldSB);

该方案的Append(StringBuilder)重载在.NET Framework 4.0及以上版本都支持,底层同样直接操作字符缓冲区,性能和原生构造函数基本持平。

不推荐的兼容方案

如果运行环境连Append(StringBuilder)重载都不支持,可以通过反射读取原StringBuilder的内部字符数组再写入新实例,但该方式依赖框架内部实现,兼容性差,非必要不要使用。

两种方案都比oldSB.ToString()的写法少一次完整的内存拷贝,同时避免了大字符串对GC造成的额外压力,内容越大性能优势越明显。

内容的提问来源于stack exchange,提问作者NirMH

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 14:45:07