之前写过很多XNA的程序,都会碰到这种情况: 销毁一个类时,要把他所占用的资源释放。
如果类的资源没有释放,将会导致内存溢出。
那么现在给出.NET官方定义的一个IDisposable的编程模式:
class MyClass:IDisposable
{
~MyClass()
{
Dispose(false); //析构函数中只释放非托管资源
}
//显示调用释放本类所有资源
public void Dispose()
{
Dispose(true); //将导致所有资源释放
GC.SuppressFinalize(this); //不需要再调用本类对象的Finalize()方法,析构函数
}
protected virtual void Dispose(bool disposing)
{
if (disposing)
{
//清理托管资源
}
//清理非托管资源
}
}