在c#中,字符串拼接通常可直接使用“+”运算符完成。但这种写法与stringbuilder相比,在性能上存在显著差距,尤其在高频率拼接场景下,stringbuilder的优势尤为突出。实际开发中,应结合具体需求合理选用拼接方式。
1、 C#中的字符串是不可变类型(immutable),一旦创建便无法更改其内容。每次对字符串变量进行赋值或拼接操作时,并非修改原对象,而是由运行时分配一块新内存,生成一个全新的字符串实例。因此,反复拼接将导致大量临时字符串对象被创建,旧对象则交由GC回收。
2、 StringBuilder则采用可变缓冲区机制,在原有内存空间内动态扩展并修改内容,避免了频繁的内存分配与复制开销。
3、 新建一个控制台项目,在Program类下方添加一个名为StringHelper的静态类,并在文件顶部引入System.Text命名空间。

4、 在StringHelper类中定义一个静态方法UseString,接收两个string参数,通过“+”操作符将其连接后返回结果。

5、 同样在StringHelper类中,新增一个名为UseStringBuilder的静态方法,同样接收两个字符串参数,内部借助StringBuilder完成拼接,并最终返回字符串形式的结果。
6、 使用StringBuilder完成拼接后,必须调用ToString()方法将其内部缓冲区内容转换为标准string对象。

7、 在Program.cs文件顶部添加using System.Diagnostics;语句,以便使用Stopwatch类实现毫秒级精度的时间测量,辅助评估不同拼接方式的执行效率。

8、 在Main方法中初始化一个Stopwatch对象,在调用UseString方法前启动计时器,执行完毕后停止并输出耗时(单位:毫秒)。实测五万次拼接操作耗时约为8000毫秒左右。
9、 实际运行时间会因硬件配置、系统负载及后台进程等因素略有浮动,属正常现象。

10、 接着在Main方法中以相同方式调用UseStringBuilder方法并统计耗时。测试显示,完成五万次拼接仅需约7毫秒。

11、 对比Stopwatch记录的数据可知,StringBuilder的执行速度较传统string拼接快出千倍以上。
12、 当字符串拼接发生在循环体中且次数较多时,优先选用StringBuilder;若仅为少量、一次性拼接,则string的简洁性更具优势,性能差异几乎可以忽略。












