【发布时间】:2015-09-08 08:03:14
【问题描述】:
我正在使用继承并试图了解使用 IDisposable 的最佳方式。下面是我的基类的示例。
我知道,如果我有一个继承自 MyBase 类的类(让我们调用 MyChild),即使 MyChild 没有实现 IDisposable,如果 MyChild 已初始化,则将执行 Dispose 方法(相信我说得对) 如果像下面这样使用,
using(MyChild chl = new MyChild) {// some code};
我想知道的是,我在 MyChild 类中有一个对象,我想确保将其处理掉。我是否必须实现 IDisposable 接口并拥有与 MyBase 类中几乎相同的代码,或者我可以使用 MyBase 类中的代码吗?我猜这就是为什么在 MyBase 类中有一个受保护的虚拟 Dispose 方法的原因?
我的基类
public class MyBase : IDisposable
{
// variables & methods declared here etc
public void Dispose()
{
Dispose(true);
}
protected virtual void Dispose(bool disposing)
{
if (disposing)
{
if (myObj != null) releaseObject(myObj);
}
}
private static void releaseObject(object obj)
{
System.Runtime.InteropServices.Marshal.ReleaseComObject(obj);
}
}
【问题讨论】:
标签: c# .net inheritance