1. 程式人生 > >C#string與stringbuilder,Sting的區別

C#string與stringbuilder,Sting的區別

string與StringBuilder區別

string的缺點是每次字串變數的內容發生了改變時,都必須重新分配記憶體。如果建立一個迭代100000次的迴圈,每次迭代都將一個字元連線到字串,這樣記憶體中就會有100000個字串,每個字串僅僅與前一個字串相伴只是有一個字元不同,效能影響是很大的。StringBuilder通過分配一個快取,就是一個工作區來解決這些問題,在工作區中隊字串應用StringBuilder類的相關方法。包括新增,刪除,移除,插入和替換字元等等。執行完之後,將呼叫ToString方法把工作區中的內容轉換為一個字串,方便賦給一個字串變數。這樣StringBuilder會提升一些效能。

StringBuilder的常用方法

StringBuilder常用方法 使用說明
StringBuilder.Append(); 將內容追加到當前StringBuilder字串的結尾
StringBuilder.Insert(int,string) 將字串和物件插入到當前StringBuilder字串的指定位置
StringBuilder.Remove(p,n) 在當前StringBuilder物件中移除指定的字元,就是說從p位置開始刪除n個字元
StringBuilder.Replace(a,b) 就是用b替換a指定字串,a和b都是字元或字串
StringBuilder.AppendFormat()) 用一個帶格式文字來代替字串要傳遞的符號

string與String的區別

string String
c#中的類 .net Framework的類
使用string,編譯器會自動編譯成String 如果使用String,直接用可以減少編譯器的工作
關鍵字,不能作為類、結構、列舉、欄位、變數、方法、屬性的名稱 不是關鍵字,能作為類、結構、列舉、欄位、變數、方法、屬性的名稱
始終代表 System.String(1.x) 或 ::System.String(2.0) 只有在前面有using System;的時候並且當前名稱空間中沒有名為String的型別(class、struct、delegate、enum)的時候才代表System.String