19
正确使用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在上面的代码中包含上百万字符串,你想释放内存现在,而不是等待垃圾回收器。上面的代码能做到吗?