传递对 IDisposable 对象的引用的类也应该是 IDisposable 并在处置时将它们设置为 null 吗?

发布于 2024-08-26 15:54:37 字数 32 浏览 5 评论 0原文

我认为这个问题说明了一切。

谢谢。

I think the question says it all.

Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

婴鹅 2024-09-02 15:54:37

如果对象拥有该资源,他们应该实现IDisposable。尽管没有什么坏处,但通常不需要将其设置为空。

如果您拥有该资源,那么显然您不应该处置它,并且不需要实现IDisposable。根据我的经验,我很少有一个用于一次性资源的成员变量,但我在我的类中不拥有该变量......

They should implement IDisposable if the object owns that resource. There's generally no need to set things to null, although it does no harm.

If you don't own the resource, then clearly you shouldn't dispose of it, and you don't need to implement IDisposable. In my experience it's relatively rare that I have a member variable for a disposable resource which I don't own in my classes though...

白况 2024-09-02 15:54:37

“持有参考”并不是真正的标准。当一个对象逻辑上“拥有”一个 IDiposable 对象时,那么是的,它应该实现 IDisposable 来为所有拥有的 Disposable 对象调用 Dispose。
但它不应该实现析构函数(Finalizer)。

"Holding a reference" is not the real criterium. When an object logically 'owns' an IDiposable object then Yes, it should implement IDisposable to call Dispose for all owned Disposable objects.
But it should not implement a destructor (Finalizer) .

暖阳 2024-09-02 15:54:37

设置为 null 不是必需的,但您应该对父类的 .Dispose() 中的所有这些对象调用 .Dispose()

编辑:当且仅当您的类负责创建这些对象。

Setting to null isn't necessary, but you should call .Dispose() on all of those objects from the parent class's .Dispose().

EDIT: IF AND ONLY IF your class was responsible for creating those objects.

绮烟 2024-09-02 15:54:37

是的,这是一个很好的做法。当调用此类的 dispose 时,最好对所有引用的对象也调用 Dispose。

This a good practice yes. When the dispose of such a class is called, it's a good idea to call Dispose on all referenced objects as well.

↘紸啶 2024-09-02 15:54:37

是的,如果引用归类所有,FxCop / MS 代码分析甚至有 检查

Yes they should if the reference is owned by the class, FxCop / MS code analysis even have a check for it.

凹づ凸ル 2024-09-02 15:54:37

如果您的类创建了一次性对象,那么您的类负责清理它们。由于您的类不知道何时进行清理,除非有东西告诉它(我不计算析构函数),所以这是使您的类实现 IDisposable 的最简单方法。

如果您的类使用但不创建一次性对象,那么您应该将清理工作留给这些对象的创建者。

If your class creates the disposable object then your class is responsible for cleaning them up. Since your class won't know when to cleanup unless something tells it to (i don't count destructors) it is the easiest way to make your class implement IDisposable.

If your class uses, but does not create, disposable objects then you should leave cleaning up to the creator of those objects.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文