C#中string和StringBuilder的選擇

來源:互聯網
上載者:User
C#中string和StringBuilder的選擇
2010-07-11 14:26:54     我來說兩句 
收藏    我要投稿    [字型:小 大]

很多地方都講,在做字串拼接的時候StringBuilder比string快,並且快得多。

事實是,StringBuilder比string快的原因是string拼接時產生了中間對象,最終是垃圾。
如:
string str = "a";
str += "b";
str += "c";
那麼,最終結果是"abc",但第二行產生了"ab"只是一個中間對象,是個垃圾。用StringBuilder會避免這種中間對象的產生。

那如果我這麼寫呢?
string str = "a"
    + "b"
    + "c";

這會比StringBuilder慢嗎?絕對不會!
且不說這種常量的字串拼接會在編譯時間就進行處理,就算"b"和"c"這裡不是常量是變數,那麼編譯結果也是string.concat(...),不會產生中間對象。

當然,這樣把多個語句變成了一個語句,有個缺點就是調試的時候沒那麼方便。

不是所有時候都可以方便的轉換成連加,比如遇到if、while等語句塊時。

用StringBuilder的目的是為了不產生中間變數,但如果這麼用:
stringbuilder.Append("a"+str1+"b"),就還是產生了中間變數:"a"+str1+"b",應該改成
stringbuilder.Append("a").Append(str1).Append("b"),效能會更好,但可讀性就差點了。

我的結論:可以轉換成一句string連加的StringBuilder操作,用連加更好。但盡量減少+=。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.