服務熱線
153 8323 9821
StringBuilder 采用了構造器設計模式的思想高效地構造一個字符串對象,在構造過程中StringBuilder可以有效避免臨時字符串對象的生成。
1:當需要操作很長的字符串,或者要對字符串進行非常頻繁的操作時,應該使用StringBuilder,其余場合,用String比較方便。
2:之所以說平常情況用String比較方便是因為:
StringBuilder sb="hello world!"; 這樣的語句是不行的,要用:
StringBuilder sb=new StringBuilder("hello world!"); 這樣子才能初始化一個StringBuilder對象。
sb="change the content of StringBuilder"; 這樣的語句也是不行的,不能直接把String轉換成StringBuilder,顯式轉換也不成!
sb.Remove(0, sb.Length);
sb.Append("Test for string builder change!"); 這樣子才能改變一個StringBuilder對象的內容。或者用sb.Replace();方法。
3:StringBuilder類還有一個這樣的特性:它的Length屬性是非ReadOnly的,
假如有: StringBuilder sb=new StringBuilder("12345");
執行: sb.Length=3;
再輸出sb的內容,就只剩 123 了。如果這個Length設置大于原來的長度,那么后面補空格。
String 類型沒有這個功能,它的Length是read only的!
“StringBuilder類內部保留了一個私有的String 類型成員,當ToString()這個方法被調用時,這個String 類型成員將會被賦值并且返回給調用者。在字符串組裝期間,這個字符串會在內存上被直接修改。StringBuilderod 不僅僅提供了性能上更加優秀的字符串操作,它還能被用來和非托管代碼進行交互。對于非托管的代碼,字符串的操作是直接基于內存的,如果使用字符串類型和非托管的代碼進行,那潛在的違反了字符串對象不可變的原則。所以StringBuilder類常常被用來和非托管代碼進行交互。”