我现在正在用c#编写一个小玩具汇编程序(通过计算系统书的元素.顺便说一句,这本书非常好.)
汇编程序采用输入文件路径并删除垃圾(注释等)行.
然后将该文件传递给解析器,最后传递给另一个创建二进制代码的模块.
这不是太复杂,但是每当一个对象完成输入文件的处理时,我不想写文件系统的临时文件.
我想将流传递到下一个对象.我原本以为每个涉及解析/垃圾删除的类都会实现IDisposable,但我认为这意味着我无法在下一个对象上传递流进行处理(流将被关闭,除非我将它全部保存在一个使用语句中? ).
我想我在这里遗漏了一些东西,是否有一种简单的方法可以干净地在对象之间传递流,或者我需要一种不同的方法吗?
在此先感谢您的帮助!
Mar*_*ann 11
通常,消费者有责任妥善处理Disposable对象.因此,如果您将Stream传递给另一个对象,则不应将其置于此处 - 这将是消费者的责任.
因此,在明确的场景中,要么您持有对Disposable对象的引用,在这种情况下,您应该确保它被正确处理; 或者你将引用传递给别人并忘掉它.
那么你需要自己持有一个引用但仍然传递它的情况呢?在这些情况下,传递Disposable资源的副本 - 这将使您和消费者相互独立地管理两个实例的生命周期.但是,如果你遇到这种情况,你应该重新考虑你的设计,因为我称之为代码味道.