IDisposable 接口 使用准则

来源:互联网 发布:mac landesk 卸载 编辑:程序博客网 时间:2024/05/16 23:55

准则一:只有在需要情况下才使用该接口,例如:

1.你的类包含了非托管资源

2.你的类包含了 实现IDisposable 接口 的属性

准则二:对于有托管资源的类,继承IDisposable 接口,尽量不要 使用 析构函数,Dispose方法越简单越好。没有必要对类里面的托管资源 赋值 null.

准则三:对于有一个非托管资源的类,继承IDisposable 接口,需要实现Dispose方法和析构函数。

1.不要创建含有多个非托管资源的类

2.不要创建即含有非托管资源又有托管资源的类

3.Dipose方法最后要加上GC.SuppressFinalize(this);

参考:http://blog.stephencleary.com/2009/08/how-to-implement-idisposable-and.html


附上一份CODE:

    public class ClassA : IDisposable    {        //在垃圾回收器自动回收时会调用        //通常不需要        ~ClassA()        {            Dispose(false);        }        public void Dispose()        {            Dispose(true);//这样会释放所有的资源            GC.SuppressFinalize(this);//不需要再调用本对象的Finalize方法        }        //可供子类重写        protected virtual void Dispose(bool disposing)        {            if (disposing)            {                //清理托管资源和类所拥有的实现IDisposable的成员            }            //清理非托管资源        }    }


原创粉丝点击