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


字符串操作是編程中非常頻繁的操作,特別是在拼接字符串的時候。下面來說說字符串拼接的效率提升。

1. 減少裝箱

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

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

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

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

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

3. 使用String.Format()代替“+”

String.Format是將指定的 String 類型的數據中的每個格式項替換為相應對象的值的文本等效項。同樣,我也可以用來拼接字符串,並且效率高於“+”。

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

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

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");

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM