.NET技术总结系列 -- IDisposabe模式

1.前言

对.NET/C#稍有了解的同学,都应该知道IDispose模式的存在,但不知道有多少同学能彻彻底底地理解这种模式。楼主本人初识IDispose模式也有很长时间了,但对其设计原理和初衷也一直是云里雾里。直到这两天终于下定决心想彻底理解其工作模式,上网翻阅了不少资料,才算有所领悟,特别是StackOverFlow上的这篇文章:https://stackoverflow.com/questions/538060/proper-use-of-the-idisposable-interface/538238#538238,让我有茅舍顿开之感,极力推荐各位英文不错的同学参看此文。

2.你是否也有这些疑问:

  什么情况下需要实现IDisposeable接口?

  IDisposable模式与垃圾收集器(GC)之间到底有什么关联?

  isDisposing标志什么时候应该置为true,什么时候应该置为false,各自的意义是什么?

如果你也有如上疑问,希望看完本文,能给你一个满意的答复。

3. 托管资源和非托管资源

我们知道,在.NET平台下,代码中的资源类型包含两种:托管资源和非托管资源。你在.NET平台下创建的对象,以及你从FCL类库中调用的类型,一般都属于托管资源。只有windows窗体句柄、数据库连接以及网络连接(Socket)之类,以及你利用P/Invoke调用的Windows API属于非托管资源。

4. 非托管资源释放

如果你在一个(C#)类中创建了一个非托管资源,那么垃圾回收器将无法对其进行自动回收,这时候,程序员需要负责完成对该非托管资源的清理工作。作为类设计者,有多种方式可完成该项清理工作,比较常用的方法是,提供一个形如Clear()之类的清理接口函数,供类使用者调用,类设计者负

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值