【學習資料】
《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[]的長度大小。所以初始化會比較慢一點。