【学习资料】
《C#图解教程》(第25章):https://www.cnblogs.com/moonache/p/7687551.html
电子书下载:https://pan.baidu.com/s/1mhOmBG0
- 参考文章
【内容】
-
- string
- StringBuilder
- 两者比较
【笔记】
- string
- string是 System.String 类的别名
- 字符串常量,内容不可修改。
- 注:每次修改(赋值、拼接、替换),都是 重新生成新的字符串(开辟新的堆内存),然后将引用指向新的字符串。
- 如图:string拼接时,会重新生成新的字符串(开辟新的堆内存),然后改变 s 的引用
-
- 常用方法
- StringBuilder
-
- 命名空间: using System.Text;
- 内部数据存储:可变数组 char[]
- 每次修改(赋值、拼接、替换),都是对内部char数组进行操作,不会在堆内存创建新的字符串。
- 注:StringBuilder创建时需要预设内置数组char[]的长度大小。所以初始化会比较慢一点。
- 注:只有当新的字符串的长度 大于 内部数组最大长度时,才会重新创建新的 char[] (开辟新的堆内存)
- 如图:拼接时,只会在内部分配的可变数组中进行修改,s 的引用不变
- 两者比较
- 频繁改动的字符串:使用StringBuilder性能更高,GC更少。
- 改动不多:性能差不多,而使用string,操作比较方便。
- 注:StringBuilder创建时需要预设内置数组char[]的长度大小。所以初始化会比较慢一点。