我只是對此感到好奇。它讓我覺得StringBuilder的行爲在功能上(如果不是技術上)與Stream相同 - 它是可以添加其他數據的數據倉。爲什麼StringBuilder類不是從Stream繼承的?
再次,只是好奇。
我只是對此感到好奇。它讓我覺得StringBuilder的行爲在功能上(如果不是技術上)與Stream相同 - 它是可以添加其他數據的數據倉。爲什麼StringBuilder類不是從Stream繼承的?
再次,只是好奇。
流是二進制數據的輸入輸出。
StringBuilder是建立的手段文本數據。
除此之外,還有狀態問題 - 一個StringBuilder只有當前值,不知道「位置」。它允許你訪問和改變其中任何地方的數據。另一方面,流在邏輯上是一個潛在的無限數據流,在中間的某個位置放置一個光標來說明你需要的位置。您通常只是向前讀取/寫入,Seek/Position會跳到數據流的特定部分。
嘗試想象用StringBuilder實現Stream API ......它只是不適合。你可以排序做到這一點,但基本上你最終會得到StringReader和StringWriter。
流通常是指外部輸入/輸出源(文件,網絡)。 StringBuilder沒有這樣的特性。
因爲它不是一個真正的流。它更像是一個增長的緩衝區。
儘管兩者都可以將數據添加到它們,但功能整體上是不同的。
流是用於輸入或輸出來自/來源的數據,而不用於構建某些東西。 StringBuilder不需要Stream提供的功能,如緩衝等來構建資源。
StringBuilder
不僅僅是附加功能。它還具有插入功能,這對於流是不自然的。如果您想要包含StringBuilder
的流,請使用StringWriter
類。
另一方面,您可以在System.IO中找到類StringReader/Writer。 StringWriter例如實現TextWriter針對基礎StringBuilder。
個人我從來沒有使用過它,但如果你有一個文本文件寫程序,你可以使它對TextWriter工作。然後在你的測試中,不要實例化一個StreamWriter你實例化一個StringWriter然後你可以通過查看底層的StringBuilder來查看是什麼編寫的。
現在我暈...
+1 ......我是在寫極其相似這一個答案的過程...:d – 2009-01-30 17:51:59