String和StringBuilder 的性能比較,網上能找到很多,但是大多數都是比較字符串的連接性能,字符串的連接 String +=的效率確實不如StringBuilder ,這個大家都能在網上找很多的示例。就這樣,我們被這些鐵證同化了,我們開始泛濫的使用StringBuilder,StringBuilder 就是B String好,甚至有些朋友更進一步,對StringBuilder再進行封裝,重載運算符搞個類,來代替String。
但是不是對字符串的一些操作String 都不如StringBuilder呢?
String 和StringBuilder的區別:
1. 雖然兩者都是引用類型,但是在C#中String作為值的時候通常當做結構體一樣處理,例如:我們寫:
string text = "abc";text.Replace("a", "b");是不是這樣,text的值就變了呢?很顯然沒有,我們得這樣寫:
text = text.Replace("a", "b");還有String作為函數參數的時候,我們是否意識了呢?
如果換做StringBuilder就不需要第三步的代碼了。
2. String 和StringBuilder的方法也並不是完全一樣,這是廢話,當然不會一樣了,那好,那就是他們也包含相同,相似的功能的方法。
以前我了解到StringBuilder 在連接字符串的時候效率很高,從此以後我就愛屋及烏,只要遇到String的方法在StringBuilder中有的,就會優先使用StringBuilder,也沒問為什麼,腦子裡就一個信仰,StringBuilder真漢子,鐵血真爺們!
這裡,我就開始有些懷疑,難道StringBuilder的中的方法都比String的強嗎?探索精神,耶!
我用的是VS2008,見如下代碼: