程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#中string和StringBuilder的選擇

C#中string和StringBuilder的選擇

編輯:C#入門知識

很多地方都講,在做字符串拼接的時候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操作,用連加更好。但盡量減少+=。

    

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved