.NET流,在对象之间传递流,最佳实践(C#)

bpl*_*lus 9 c# stream

我现在正在用c#编写一个小玩具汇编程序(通过计算系统书的元素.顺便说一句,这本书非常好.)

汇编程序采用输入文件路径并删除垃圾(注释等)行.

然后将该文件传递给解析器,最后传递给另一个创建二进制代码的模块.

这不是太复杂,但是每当一个对象完成输入文件的处理时,我不想写文件系统的临时文件.

我想将流传递到下一个对象.我原本以为每个涉及解析/垃圾删除的类都会实现IDisposable,但我认为这意味着我无法在下一个对象上传递流进行处理(流将被关闭,除非我将它全部保存在一个使用语句中? ).

我想我在这里遗漏了一些东西,是否有一种简单的方法可以干净地在对象之间传递流,或者我需要一种不同的方法吗?

在此先感谢您的帮助!

Mar*_*ann 11

通常,消费者有责任妥善处理Disposable对象.因此,如果您将Stream传递给另一个对象,则不应将其置于此处 - 这将是消费者的责任.

因此,在明确的场景中,要么您持有对Disposable对象的引用,在这种情况下,您应该确保它被正确处理; 或者你将引用传递给别人并忘掉它.

那么你需要自己持有一个引用但仍然传递它的情况呢?在这些情况下,传递Disposable资源的副本 - 这将使您和消费者相互独立地管理两个实例的生命周期.但是,如果你遇到这种情况,你应该重新考虑你的设计,因为我称之为代码味道.