string本身是不可改變的,它只能賦值一次,每一次內容發生改變,都會生成一個新的對象,然后原有的對象引用新的對象,而每一次生成新對象都會對系統性能產生影響,這會降低.NET編譯器的工作效率。string操作示意圖如圖1所示。
圖1string操作示意圖
而StringBuilder類則不同,每次操作都是對自身對象進行操作,而不是生成新的對象,其所占空間會隨着內容的增加而擴充,這樣,在做大量的修改操作時,不會因生成大量匿名對象而影響系統性能。StringBuilder操作示意圖如圖2所示。
圖2StringBuilder操作示意圖
技巧:當程序中需要大量的對某個字符串進行操作時,應該考慮應用StringBuilder類處理該字符串,其設計目的就是針對大量string操作的一種改進辦法,避免產生太多的臨時對象;而當程序中只是對某個字符串進行一次或幾次操作時,采用string類即可。
感謝讀者朋友對明日科技的支持,如果您對圖書中的講解及光盤源碼有任何問題,可以直接登錄http://www.mingrisoft.com上的社區進行發貼,把您的問題詳細的說明一下,我們的技術人員會在那里給您回復!
本文來自明日科技出版的《零基礎學C#》,轉載請注明出處!!!
StringBuilder類與string類的區別
string本身是不可改變的,它只能賦值一次,每一次內容發生改變,都會生成一個新的對象,然后原有的對象引用新的對象,而每一次生成新對象都會對系統性能產生影響,這會降低.NET編譯器的工作效率。string操作示意圖如圖1所示。
圖1string操作示意圖
而StringBuilder類則不同,每次操作都是對自身對象進行操作,而不是生成新的對象,其所占空間會隨着內容的增加而擴充,這樣,在做大量的修改操作時,不會因生成大量匿名對象而影響系統性能。StringBuilder操作示意圖如圖2所示。
圖2StringBuilder操作示意圖
技巧:當程序中需要大量的對某個字符串進行操作時,應該考慮應用StringBuilder類處理該字符串,其設計目的就是針對大量string操作的一種改進辦法,避免產生太多的臨時對象;而當程序中只是對某個字符串進行一次或幾次操作時,采用string類即可。
標簽:C#StringBuilder類string類可變字符串string類與StringBuilder類區別
本文來自明日科技出版的《零基礎學C#》,轉載請注明出處!!!