正确使用 IDisposable 接口

通过阅读Microsoft 文档 ,我知道IDisposable接口的 “主要” 用途是清理非托管资源。

对我来说,“非托管” 意味着诸如数据库连接,套接字,窗口句柄之类的东西。但是,我已经看到了在其中实现Dispose()方法以释放托管资源的代码,这对我来说似乎是多余的,因为垃圾收集器应该照顾好你

例如:

public class MyCollection : IDisposable
{
    private List<String> _theList = new List<String>();
    private Dictionary<String, Point> _theDict = new Dictionary<String, Point>();

    // Die, clear it up! (free unmanaged resources)
    public void Dispose()
    {
        _theList.clear();
        _theDict.clear();
        _theList = null;
        _theDict = null;
    }

我的问题是,这是否会使MyCollection使用的垃圾收集器释放内存的速度比正常情况更快?

编辑 :到目前为止,人们已经发布了一些使用 IDisposable 清除数据库,连接和位图等非托管资源的良好示例。但是假设_theList在上面的代码中包含上百万字符串,你想现在就释放内存,而不是等待垃圾回收器。上面的代码能做到吗?

答案