WEB开发网
开发学院软件开发C语言 Effective C# 原则18:实现标准的处理(Dispose)模... 阅读

Effective C# 原则18:实现标准的处理(Dispose)模式

 2009-02-19 08:16:44 来源:WEB开发网   
核心提示: protected virtual void Dispose( bool isDisposing );重载的方法同时完成析构和处理必须提供的任务,又因为它是虚函数,Effective C# 原则18:实现标准的处理(Dispose)模式(3),它为所有的派生类提供函数入口点,派生类可以重载

protected virtual void Dispose( bool isDisposing );

重载的方法同时完成析构和处理必须提供的任务,又因为它是虚函数,它为所有的派生类提供函数入口点。派生类可以重载这个函数,提供恰当的实现来释放它自己的资源,并且调用基类的函数。当

isDisposing为true时你可能同时清理托管资源和非托管资源,当isDisposing为false时你只能清理非托管资源。两种情况下,都可以调用基类的Dispose(bool)方法让它去清理它自己的资源。

当你实现这样的模式时,这里有一个简单的例子。MyResourceHog 类展示了IDisposable的实现,一个析构函数,并且创建了一个虚的Dispose方法:

public class MyResourceHog : IDisposable
{
 // Flag for already disposed
 private bool _alreadyDisposed = false;
 // finalizer:
 // Call the virtual Dispose method.
 ~MyResourceHog()
 {
  Dispose( false );
 }
 // Implementation of IDisposable.
 // Call the virtual Dispose method.
 // Suppress Finalization.
 public void Dispose()
 {
  Dispose( true );
  GC.SuppressFinalize( true );
 }
 // Virtual Dispose method
 protected virtual void Dispose( bool isDisposing )
 {
  // Don't dispose more than once.
  if ( _alreadyDisposed )
   return;
  if ( isDisposing )
  {
   // TODO: free managed resources here.
  }
  // TODO: free unmanaged resources here.
  // Set disposed flag:
  _alreadyDisposed = true;
 }
}

上一页  1 2 3 4 5  下一页

Tags:Effective 原则 实现

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接