gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 18:24:16 25 4
gpt4 key购买 nike

我目前正在用 C# 编写一个小玩具汇编器(正在浏览 the elements of computing systems book 。顺便说一句,这本书真的很棒。)

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

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

这并不太复杂,但我不想每次一个对象完成输入文件的处理时都必须向文件系统写出一个临时文件。

我只想将流传递到下一个对象。我最初认为参与解析/垃圾删除的每个类都会实现 IDisposable 但我认为这意味着我无法将流传递给下一个对象进行处理(流将被关闭,除非我将它全部保存在一个 using 语句中? ).

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

在此先感谢您的帮助!

最佳答案

一般来说,正确处理 Disposable 对象是消费者的责任。因此,如果您将 Stream 传递给另一个对象,则不应处置它 - 这是消费者的责任。

所以在明确的场景中,要么你持有对 Disposable 对象的引用,在这种情况下你应该确保它被正确处置;或者您将引用传递给其他人而忘记了它。

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

关于c# - .NET 流,在对象之间传递流,最佳实践 (C#),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1041267/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com