1. 程式人生 > >c#之Stringbuilder、String、Append

c#之Stringbuilder、String、Append

問題引出: 

StringBuilder sqlQuery = new StringBuilder();  sqlQuery.Append("SELECT COUNT([ProductID]) FROM ~~where [IsDelete]='F' );  

1.StringBuilder和String的區別

  String aa="123456";     aa+="789";

 StringBuilder text=new StringBuilder("123456",12);  text.Append("789");

       如果你輸出aa,和text 你會發現他們的輸出內容是一樣的。

      但是aa的操作過程實際上是:首先在記憶體中分配一個地址空間,空間大小是6。 然後執行 aa+="789";的操作,該過程是連線字串,“123456”和“789”並且在記憶體中重新分配地址。把aa的記憶體地址指向 “123456789”的記憶體地址。       也就是說在記憶體中實際上是有兩個空間被分配,第一的記憶體空間,在後來是由C#的垃圾處理機制來自動處理掉,如果我們用3 4 句的程式來實現這個過程,那麼他是沒有再次分配記憶體空間的,他就是在text的記憶體空間裡進行了操作。這裡要說明下StringBuilder在生命變數的過程中是可以我們自己來分配他的大小的,如果實際的內容超出記憶體空間,他會自動翻倍。

      通過上面的例子,我們可以知道 StringBuilder的優越性是在: 第一:他不需要每次都去分配記憶體空間。所以系統就沒有必要去處理垃圾; 第二:當我們需要多次的對一個字串進行多次操作的時候,他的效率要遠遠 高 與string 

2.Append 

       Append 方法可用來將文字或物件的字串表示形式新增到由當前 StringBuilder 物件表示的字串的結尾處。 StringBuilder.Append 將資訊追加到當前 StringBuilder 的結尾。 

StringBuilder.AppendFormat 用帶格式文字替換字串中傳遞的格式說明符。  StringBuilder.Insert 將字串或物件插入到當前 StringBuilder 物件的指定索引處。  StringBuilder.Remove 從當前 StringBuilder 物件中移除指定數量的字元。