这是实现 Dispose 模式的常规模式重写 Object.Finalize的派生类:
using System; class DerivedClass : BaseClass { // Flag: Has Dispose already been called? bool disposed = false; // Protected implementation of Dispose pattern. protected override void Dispose(bool disposing) { if (disposed) return; if (disposing) { // Free any other managed objects here. // } // Free any unmanaged objects here. // disposed = true; } ~DerivedClass() { Dispose(false); } } |
这是配置模式实现的常规模式使用安全句柄的基类:
using System; class BaseClass : IDisposable { // Flag: Has Dispose already been called? bool disposed = false; // Public implementation of Dispose pattern callable by consumers. public void Dispose() { Dispose(true); GC.SuppressFinalize(this); } // Protected implementation of Dispose pattern. protected virtual void Dispose(bool disposing) { if (disposed) return; if (disposing) { // Free any other managed objects here. // } // Free any unmanaged objects here. // disposed = true; } } |
这是实现 Dispose 模式的常规模式使用安全句柄的派生的类:
using System; class DerivedClass : BaseClass { // Flag: Has Dispose already been called? bool disposed = false; // Protected implementation of Dispose pattern. protected override void Dispose(bool disposing) { if (disposed) return; if (disposing) { // Free any other managed objects here. // } // Free any unmanaged objects here. // disposed = true; } } |