noc*_*ura 6 .net c# dispose design-patterns
这是来自MSDN的代码.我不明白为什么这里的工作不只是在常规的Dispose()方法中完成.使用Dispose(bool)方法的目的是什么?谁会在这里打电话给Dispose(false)?
public void Dispose()
{
Dispose(true);
// Use SupressFinalize in case a subclass
// of this type implements a finalizer.
GC.SuppressFinalize(this);
}
protected virtual void Dispose(bool disposing)
{
// If you need thread safety, use a lock around these
// operations, as well as in your methods that use the resource.
if (!_disposed)
{
if (disposing) {
if (_resource != null)
_resource.Dispose();
Console.WriteLine("Object disposed.");
}
// Indicate that the instance has been disposed.
_resource = null;
_disposed = true;
}
}
Run Code Online (Sandbox Code Playgroud)
Jon*_*eet 15
终结器将调用Dispose(false)- 在这种情况下,您不会触及任何其他托管资源(可能已经完成).
我个人经常不遵循这种模式 - 因为我只非常非常需要一个终结器,而且编写一个非密封的IDisposable实现也很少见.如果你正在写一个没有终结器的密封课程,我会选择一个简单的实现.