c#之如何正确地实现IDisposable接口
见实例:
public class TestClass : IDisposable { //供程序员显式调用的Dispose方法 public void Dispose() { //调用带参数的Dispose方法,释放托管和非托管资源 Dispose(true); //手动调用了Dispose释放资源,那么析构函数就是不必要的了,这里阻止GC调用析构函数 GC.SuppressFinalize(this); } //protected的Dispose方法,保证不会被外部调用。 //传入bool值disposing以确定是否释放托管资源 protected void Dispose(bool disposing) { if (disposing) { ///TODO:在这里加入清理"托管资源"的代码,应该是xxx.Dispose(); } ///TODO:在这里加入清理"非托管资源"的代码 } //供GC调用的析构函数 ~TestClass() { Dispose(false);//释放非托管资源 } }