C#中StringBuilder類的使用

今天在寫代碼的時候想實現一個字符串的反轉,於是上網搜資料想找找有沒有什麼簡便的方法。然後找到一篇文章比較詳細得分析了這個問題。其中就說到了String類與StringBuilder類的區別。
反轉字符串常見的一種錯誤的做法如下

static string Reverse(string str)  
{  
    string strReturn = "";  
    foreach (char c in str)  
    {  
        strReturn = c + strReturn;  
    }  
    return strReturn;  
}  

要注意的是當執行strReturn = c + strReturn 這一步的時候 , 每次執行的時候都會申請一塊新的內存,然後將值複製到那塊內存,然後再執行賦值操作,內存浪費嚴重。所以正確的做法應該是使用StringBuilder類,要注意的是構造StringBuilder類時要指定初始容量,否則默認爲16個字符,並且當追加字符容量大於原有容量時,就會分配一塊大小是原緩衝區兩倍大小的緩衝區。所以反轉字符串其中一種做法如下:

public static string Reverse(string str)   
{   
    if (string.IsNullOrEmpty(str))   
    {   
        throw new ArgumentException("參數不合法");   
    }   

    StringBuilder sb = new StringBuilder(str.Length);   
    for (int index = str.Length - 1; index >= 0; index--)   
    {   
        sb.Append(str[index]);   
    }   
    return sb.ToString();   
}  

總結,當有大量字符串疊加操作的時候應該使用StringBuilder類來進行實現。

發佈了26 篇原創文章 · 獲贊 4 · 訪問量 8238
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章