C# .Net String字符串效率提升-字符串拼接

字符串操做是編程中很是頻繁的操做,特別是在拼接字符串的時候。下面來講說字符串拼接的效率提高。編程

1. 減小裝箱ui

值類型與引用類型之間的轉換存在裝箱與拆箱操做;將值類型轉換成引用類型的操做叫裝箱,將引用類型轉換成值類型叫拆箱。
整數類型在與字符串進行拼接操做時,並不默認調用ToString()方法,存在裝箱操做。因此:
    var str1 = "a"+1;//存在裝箱,效率低
    var str2 = "a" + 1.ToString();//效率更高

2. 避免分配額外的內存空間spa

string對象(字符串對象)是個很特殊的對象,它一旦被賦值就不可改變。在運行時調用System.String類中的任何方法或進行任何運算(如「=」賦值、「+」拼接等),都會在內存中建立一個新的字符串對象,這也意味着要爲該新對象分配新的內存空間。code

var str1 = "a";
str1 += "b";//又建立了2個字符串對象,而且執行了一次string.Contact方法

var str2 = "a" + "b";//字符串不會在運行時進行拼接,而是會在編譯時直接生成一個字符串,等效於 str="ab";效率更高

3. 使用String.Format()代替「+」orm

String.Format是將指定的 String 類型的數據中的每一個格式項替換爲相應對象的值的文本等效項。一樣,我也能夠用來拼接字符串,而且效率高於「+」。對象

string s1 = "a";
string s2 = "b";
var str1 = s1 + s2;
var str2 =  String.Format("字符1 {0}, 字母2 {1}", s1, s2);//效率高

4. 大量字符串拼接使用StringBuilderblog

StringBuilder是可變長度的,其首先在內存中分配固定的長度,當進行頻繁的插入和鏈接操做時,超出了內存中分配的長度會自動進行擴充,從而有效的節約了內存空間和減小了生成對象的時間。內存

var str1 = "a";
str1 += "b";
str1 += "c";
str1 += "d";
//效率更高,尤爲是在處理大量字符串的時候或者是在循環裏面
var str2 = new System.Text.StringBuilder("a");
str2.Append("b");
str2.Append("c");
str2.Append("d");
相關文章
相關標籤/搜索