在C#中使用IDisposable和析构函数有什么区别?

什么时候在类而不是析构函数上实现IDispose?我读了这篇文章,但我仍然没有抓住重点。


我的假设是,如果我在对象上实现IDispose,则可以显式地“销毁”该对象,而不是等待垃圾回收器执行此操作。这个对吗?


这是否意味着我应该始终在对象上显式调用Dispose?常见的例子有哪些?


一只斗牛犬
浏览 633回答 3
3回答

有只小跳蛙

在MSDN上有一个很好的描述:此接口的主要用途是释放非托管资源。当不再使用托管对象时,垃圾收集器会自动释放分配给该对象的内存。但是,无法预测何时会发生垃圾回收。此外,垃圾收集器不了解 诸如窗口句柄或打开的文件和流之类的非托管资源。使用此接口的Dispose方法 与垃圾回收器一起显式释放非托管资源。当不再需要该对象时,该对象的 使用者可以调用此方法。
打开App,查看更多内容
随时随地看视频慕课网APP