.NET 中的资源管理与装箱机制解析
1. 资源管理与 Dispose 方法
在处理实现了 IDisposable 接口的对象时,通常需要调用 Dispose 方法来释放非内存资源。不过,存在一些特殊情况可以不调用该方法。
1.1 Dispose 方法的调用规则
当基类提供了虚拟的受保护形式的 Dispose 方法时,其公共的 Dispose 方法应该调用 GC.SuppressFinalization 。例如, Stream 基类就是这样做的。一般来说,如果编写的类同时提供了 Dispose 方法和终结器,无论是否支持继承,在调用 Dispose 时都应该抑制终结器。
如果编写的类实现了 IDisposable 接口且希望该类可以被继承(即非 sealed 类),应将 Dispose 方法设为虚拟的,这样派生类可以重写该方法以添加自己的资源释放逻辑,并且重写方法应始终调用基类的 Dispose 方法。
1.2 可选的资源释放情况
虽然大多数实现 IDisposable 接口的对象都需要调用 Dispose 方法,但有以下几种例外情况:
超级会员免费看
订阅专栏 解锁全文
915

被折叠的 条评论
为什么被折叠?



