使用基类的析构函数/处理?

Tip*_*ipx 9 c# dispose destructor idisposable finalizer

在C#中,如文档中所提到的,以及这篇不错的帖子已接受的答案,它声明类不继承其父类的析构函数.

问题:如果我想确保处理基类的私有元素,是在所有子类中实现IDisposable的正确方法,并在Dispose方法中调用base.Dispose()?

这样做看起来没问题,但我更倾向于一种不需要在所有子类中实现的方法.

Nik*_*Nik 15

MSDN声明自动在基类上调用析构函数.


Hen*_*man 6

你应该在这里遵循一次性模式.它也适合继承.

这里有趣的部分是"析构函数不继承",我不知道该怎么做.我写了一点测试,但令我感到宽慰的是,你只需要在基类中编写一个析构函数.

因此,孩子们与基类非托管资源脱钩.他们可以覆盖Dispose(bool)以清理自己的事务.

但我发表评论是因为我看到太多的程序员只是为了处理托管资源而实现完整模式.

从一般设计的角度来看,一个Disposable类最好是密封的.