关闭

IDisposable接口的使用

1392人阅读 评论(0) 收藏 举报

按照MSDN的定义,IDisposable接口是用作释放非托管资源的,但初看它的实例代码,给人一种IDisposable是用来释放托管资源的方法。

事实上,IDisposable接口的使用规则如下:

1.如果对象实现了IDisposable接口及其dispose方法,那么托管资源和非托管资源都由dispose来释放,最后不会调用析构函数。

2.如果dispose方法没有被调用,那么CLR就会调用析构函数,释放非托管资源。

以下就是实现IDisposable接口后对象调用的流程图:

问题释疑:

1、IDisposable接口为.net程序提供了资源(托管和非托管)释放的便利工具,加入对象调用程序不显示调用dispose方法,那么托管资源就不会被释放,从而会引发内存泄漏等问题。

2、采用dispose释放托管资源后,并不意味着对象它的生存周期已结束,你仍可以在其他地方引用它,这是于c++程序不同的地方。

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:39600次
    • 积分:537
    • 等级:
    • 排名:千里之外
    • 原创:11篇
    • 转载:1篇
    • 译文:0篇
    • 评论:4条
    最新评论