C# 常用类复盘
一、 String 的不变性与 StringBuilder 的最佳实践1. 什么时候该用 StringBuilder?以前我习惯在任何地方都直接用 + 或$符号去拼接字符串,直到在处理大量流水数据导出或者高频日志拼接时,发现程序直接卡死,内存占用飙升。 核心原因在于 C# 中的string具有不可变性。每次执行 str += "abc",系统其实并没有在原文本后面追加,而是在堆内存里重新开辟空间创建了一个新字符串,并把老字符串丢弃变成内存垃圾。 因此,划分使用场景的界限非常明确: 用 String 的场景:少量的字符串拼接(如 3 次以内),或者纯粹的常量文本组合。此时编译器会自动优化,性能反而最好。 用 StringBuilder 的场景:处于 for/foreach 循环内部的拼接,或者需要高频、动态组装大量文本的场景。 2. StringBuilder 的核心优势换成 StringBuilder 后,它之所以能解决卡顿问题,是因为它在内部机制中维护了一个可变的字符缓冲区(char 数组)。所有追加操作(Append)都是直接在这个数组上进行修改,避免...




