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