✅ string
與 StringBuilder
差異與運作原理
一、基本差異
特性 | string | StringBuilder |
是否可變 | 不可變(Immutable) | 可變(Mutable) |
記憶體分配 | 每次修改都會建立 新實體 | 在原本記憶體區塊上直接操作 |
效能(多次修改) | 效能差,因為會產生多個字串物件 | 效能佳,適合大量字串拼接 |
使用場景 | 小量操作、格式化、固定內容 | 迴圈中拼接字串、大量變動字串時 |
二、運作原理
string
的原理
- 屬於 不可變類型 (Immutable)。
- 當你修改字串(例如透過
+
或Replace
)時,實際上是 建立了一個新的字串實體,而不是在原字串上做修改。
- 例如:
StringBuilder
的原理
- 屬於 可變類型 (Mutable)。
- 內部使用 字元陣列 (char[]) 做為儲存區。
- 當你使用
.Append()
或.Insert()
時,是直接操作內部陣列,不會產生新物件。
- 如果超出容量,會自動擴充陣列。
三、效能比較
- 當你需要 頻繁修改或拼接字串(如在迴圈中),使用
StringBuilder
會更有效率。
string
適合用在 少量拼接、簡潔語法 的情境,例如插入變數、格式化字串等。
🔍 範例比較(10,000 次拼接):
四、建議使用時機
使用情境 | 建議類型 |
少量拼接、模板字串 | string |
字串格式化( string.Format ) | string |
多次拼接、處理大量資料 | StringBuilder |