可能重复:
正确使用 IDisposable 接口
我试图从书籍、互联网和 stackoverflow 上找到我的问题的实际答案,但到目前为止没有任何帮助我,所以希望我能准确地表达我的问题以使其有意义。
一般来说,我总是发现如何释放内存的基本用法相同,大约是。如下,我确实理解代码本身:
public class MyClass : IDisposable
{
bool disposed = false;
public void Dispose()
{
if (!disposed)
{
Dispose(true);
GC.SuppressFinalize(this);
disposed = true;
}
}
protected virtual void Dispose(bool disposing)
{
if (disposing)
{
//free managed ressources
}
// free other ressources
}
~MyClass()
{
Dispose(false);
}
}
方法的工作方式完全有意义。但现在我的问题是:为什么我们需要基类 IDisposable?在此代码示例中,我们定义了一个名为Dispose()
. 正如我在各处读到的那样,该方法是 IDisposable 的一部分,但是我们刚刚在其中定义了该方法MyClass
,如果我们不实现基类 IDisposable,此代码仍然可以工作,还是我对这个假设有误?
我对 C# 并不完全陌生,但我还有很多东西要学,所以希望有人能在这里带领我朝着正确的方向前进。我检查了另一个具有相同问题的帖子,但找不到它,所以如果它确实存在并且它确实回答了我的问题,请带我去那里,我将删除这个帖子。