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