自定义对象的处置

是否有必要处置自定义对象,即使它们只包含管理的对象? 例如,我有一个包含一些List对象的自定义类,以及一些字符串和XmlDocument的类型。 我要创造我自己的Dispose方法(虽然不是从IDisposable接口继承),只是清除这些出来,以确保它们是空的? 如果我要,我应该也自IDisposable继承?

--------------解决方案-------------

只有当其中一个或多个管理对象的自IDisposable继承。

如果你有IDisposable的对象(也称管理的资源),然后实现IDisposable,加析构函数/终结。

作为一个经验法则,你应该实现IDisposable ,如果任何管理对象实例的引用,你实现IDisposable 。 然后,您可以处理那些在您Dispose实现。

你看,设置为引用null在你的对象的生命周期到底会不会改变垃圾收集什么。 如果对包含的对象仅存引用您的自定义对象,那么垃圾回收器会将其视为符合垃圾收集呢(因为它只查找引用来自生活的对象)。 如果有从其他地方引用,所包含的对象不会,如果你清理你的引用收集,不管。

另一个故事是,当然,当你的一些包含的对象,需要明确的处置,也就是实现IDisposable ,或者需要在使用寿命结束时被关闭(虽然正确的方法是无论如何要实现IDisposable ),等等。这样你或许需要实现IDisposable自己,并在你的包含对象的处理Dispose

当然,你需要实现IDisposable一种特殊的方式,当你引用非托管的对象,但这是另一回事。

分类:C# 时间:2012-09-20 人气:0
本文关键词: 垃圾收集,IDisposable的
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 2.125 (s). 9 q(s)