假设这是传统的 Dispose 模式(取自 devx,但在许多网站上都可以看到)
class Test : IDisposable
{
private bool isDisposed = false;
~Test()
{
Dispose(false);
}
protected void Dispose(bool disposing)
{
if (disposing)
{
// Code to dispose the managed resources of the class
}
// Code to dispose the un-managed resources of the class
isDisposed = true;
}
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
}
我不明白我们为什么要打电话GC.SupressFinalize(this)
。这需要我编写自己的托管资源处置,包括将我的引用归零?我有点失落,我必须承认。有人可以阐明这种模式吗?
理想情况下,我只想处理我的非托管资源,让 GC 自己进行托管收集。
实际上,我什至不知道我们为什么要指定终结器。无论如何,编码人员应该自己调用 dispose ,不是吗?如果这只是一个后备机制,我会删除它。