Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
有一个未知大小的流(我的班级)。当 Stream 结束时,Read() 返回 0。没关系。但是在这种情况下出现了 CopyToEnd() 的概念问题。CopyToEnd() 从某个位置读取一些字节数并将它们复制到 Stream 的末尾。但是,如果它不知道流大小,它怎么能做到这一点呢?创建一个虚拟抽象方法 SeekToEnd() 并在 Stream 继承的类中定义它是一个好主意吗?或者在知道大小流的子类中移动方法 CopyToEnd() 更合理?欢迎任何想法。
我认为,您可以保留类“结束后”链接列表,其中累积来自对 CopyToEnd() 的排序调用的值。当您从原始文件到达 EOF 时,不要返回 0,而只是开始处理保存的列表。列表结束时返回 0。
这种机制解决了许多“边缘情况” - 例如,当您从链接列表中读取块时(在真实文件结束之后),同时 - 调用 CopyToEnd()。