2009-01-30 94 views

回答

10

流是二進制數據的輸入輸出。

StringBuilder是建立的手段文本數據。

除此之外,還有狀態問題 - 一個StringBuilder只有當前值,不知道「位置」。它允許你訪問和改變其中任何地方的數據。另一方面,流在邏輯上是一個潛在的無限數據流,在中間的某個位置放置一個光標來說明你需要的位置。您通常只是向前讀取/寫入,Seek/Position會跳到數據流的特定部分。

嘗試想象用StringBuilder實現Stream API ......它只是不適合。你可以排序做到這一點,但基本上你最終會得到StringReader和StringWriter。

6

流通常是指外部輸入/輸出源(文件,網絡)。 StringBuilder沒有這樣的特性。

+0

+1 ......我是在寫極其相似這一個答案的過程...:d – 2009-01-30 17:51:59

3

因爲它不是一個真正的流。它更像是一個增長的緩衝區。

1

儘管兩者都可以將數據添加到它們,但功能整體上是不同的。

流是用於輸入或輸出來自/來源的數據,而不用於構建某些東西。 StringBuilder不需要Stream提供的功能,如緩衝等來構建資源。

10

StringBuilder不僅僅是附加功能。它還具有插入功能,這對於流是不自然的。如果您想要包含StringBuilder的流,請使用StringWriter類。

1

另一方面,您可以在System.IO中找到類StringReader/WriterStringWriter例如實現TextWriter針對基礎StringBuilder

個人我從來沒有使用過它,但如果你有一個文本文件寫程序,你可以使它對TextWriter工作。然後在你的測試中,不要實例化一個StreamWriter你實例化一個StringWriter然後你可以通過查看底層的StringBuilder來查看是什麼編寫的。

現在我暈...

相關問題