簡述C#中Builder和Buffer類的用法詳解
這篇文章給大家簡單介紹下C#中String StringBuilder StringBuffer三個類別的用法,需要的朋友參考下吧
String和StringBuilder和StringBuffer,三個都是值得深究一翻的,可能很多人會說,實在不行的話,都全部用StringBuilder,啥事沒有,我不能說你的想法事不正確的,但是我可以給更好的建議。下面簡單介紹一下這三個類別。
String類別
# 在我們平常的使用中很容易不注意到的是,自己寫的程式碼很容易發生了裝箱的操作(把值型別轉換為引用型別)。就例如很常見的,一個字串拼接
string str=9+"test";
可以透過查看IL程式碼可以知道這裡發生了裝箱的操作。所以建議使用(在把值型別轉換為字串的時候,記得用ToString方法)。所以平常寫程式碼的時候,要注意下,裝箱和拆箱的操作(之後推出的泛型集合不就是為了解決裝箱和拆箱的操作)。裝箱操作的過程:把值類型放到託管堆裡面分配內存,除了值類型本身所分配的內存外,內存總量還要加上類型對象指針和同步索引塊所佔用的內存,之後再將值類型的值重新分配到堆記憶體當中,最後再傳回引用類型的物件的位址。
我們知道很多型別(值型別)都自帶了一個ToString方法,而為毛用這個就不會發生裝箱操作呢,很簡單的一個道理,不是有人跟你說String是特殊的值類型(雖然他是引用型別),C#語言的設計者,為了做到這一點,他想出了這個方法
把String對象,一旦賦值就不可改變(叫做字串的恆定性),賦值完了之後,再對String進行拼接,賦值等,都會再記憶體裡面重新分配一個新的記憶體空間。
StringBuilder
基於上面的問題,string類別在重新賦值會重新去分配記憶體空間,所以為了解決這個問題,微軟推出了一個StringBuilder的類別。我可以看看StringBuilder類別是如何做到不重新分配記憶體的呢。
透過閱讀StringBuiler類別的實現,我們可以發現
## internal const int DefaultCapacity = 0x10; StringBuilder類,預設的大小是16,意思是說我們如果不指定StringBuilder長度,超過16個長度,就會重新去分配一次記憶體。具體實作可以看看StringBuilder類別的Append原始碼。
總結:平常寫程式碼的時候要注意裝箱拆箱操作,注意stringBuilder的使用。
【相關推薦】
以上是簡述C#中Builder和Buffer類的用法詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

使用 C# 的 Active Directory 指南。在這裡,我們討論 Active Directory 在 C# 中的介紹和工作原理以及語法和範例。

多線程和異步的區別在於,多線程同時執行多個線程,而異步在不阻塞當前線程的情況下執行操作。多線程用於計算密集型任務,而異步用於用戶交互操作。多線程的優勢是提高計算性能,異步的優勢是不阻塞 UI 線程。選擇多線程還是異步取決於任務性質:計算密集型任務使用多線程,與外部資源交互且需要保持 UI 響應的任務使用異步。

可以採用多種方法修改 XML 格式:使用文本編輯器(如 Notepad )進行手工編輯;使用在線或桌面 XML 格式化工具(如 XMLbeautifier)進行自動格式化;使用 XML 轉換工具(如 XSLT)定義轉換規則;或者使用編程語言(如 Python)進行解析和操作。修改時需謹慎,並備份原始文件。
