我对此很好奇。我觉得StringBuilder的功能在功能上(如果不是技术上)与Stream相同 - 它是一个可以添加其他数据的数据仓。
再次,只是好奇。
答案 0 :(得分:10)
StringBuilder
不仅仅是附加功能。它还具有插入功能,这对于流来说是不自然的。如果您想要一个包裹StringWriter
的流。
StringBuilder
类
答案 1 :(得分:10)
Stream是二进制数据的输入和输出。
StringBuilder是构建文本数据的方法。
除此之外,还有状态问题 - StringBuilder只有当前值,不知道“位置”。它允许您访问和改变其中的任何位置的数据。另一方面,流在逻辑上是一个潜在的无限数据流,光标位于中间某个位置以说明您需要的位置。您通常只需要读/写前进,Seek / Position可以跳到数据流的特定部分。
试着想象用StringBuilder实现Stream API ......它只是不适合。您可以排序这样做,但基本上你最终会使用StringReader和StringWriter。
答案 2 :(得分:6)
流通常是指外部输入/输出源(文件,网络)。 StringBuilder没有这样的特性。
答案 3 :(得分:3)
因为它不是真正的流。它更像是一个缓冲区。
答案 4 :(得分:1)
虽然两者都可以添加数据,但功能整体上是不同的。
Stream用于从/向某些来源输入或输出数据,而不是用于构建某些内容。 StringBuilder不需要Stream提供的功能,如缓冲等,以构建资源。
答案 5 :(得分:1)
另一方面,您将在System.IO中找到 StringReader / Writer 类。 StringWriter ,例如针对底层的 StringBuilder 实现 TextWriter 。
就我个人而言,我从未使用它,但如果你有一个文本文件编写例程,你可以使它对 TextWriter 起作用。然后在测试中,不是实例化 StreamWriter ,而是实例化 StringWriter ,然后可以通过查看底层的 StringBuilder 来检查写入的内容。
现在我晕了......