C# 中的 String 和 StringBuilder 的区别
1. String 类
- String 类表示不可变的字符串。
- 一旦创建 String 对象,其内容就不能再被修改。
- 对 String 对象进行任何修改操作都会返回一个新的 String 对象。
示例:
| string str1 = "Hello"; |
| string str2 = str1 + " World!"; |
| |
| Console.WriteLine(str1); |
| Console.WriteLine(str2); |
| |
| |
| Console.WriteLine(str1 == str2); |
2. StringBuilder 类
- StringBuilder 类表示可变的字符串。
- 可以直接对 StringBuilder 对象进行插入、删除、替换等操作。
- StringBuilder 对象会在需要时自动扩展容量。
示例:
| StringBuilder sb = new StringBuilder("Hello"); |
| sb.Append(" World!"); |
| |
| Console.WriteLine(sb.ToString()); |
| |
| |
| Console.WriteLine(sb.Capacity > sb.Length); |
3. 两者的区别
区别 |
String 类 |
StringBuilder 类 |
可变性 |
不可变 |
可变 |
内存分配 |
每次修改都分配新的内存空间 |
仅在第一次分配内存空间 |
线程安全 |
线程安全 |
非线程安全 |
适用场景 |
少量修改和频繁读取 |
频繁修改 |
4. 总结
- String 类适用于需要少量修改和频繁读取的场景,例如字符串的拼接、比较等。
- StringBuilder 类适用于需要频繁修改字符串内容的场景,例如循环拼接大量字符串或动态生成字符串。
建议:
- 在需要创建不可变字符串时,使用 String 类。
- 在需要频繁修改字符串内容时,使用 StringBuilder 类。
- 在多线程环境下使用 StringBuilder 类时,需要自行保证同步。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)