38.IDisposable接口的作用
38.1 题目
C# 里常用的 IDisposable 接口,它的作用是?
38.2 深入解析
IDisposable 用于确定性释放非托管资源或需尽早归还的托管资源(如 Dispose 内释放托管成员)。通过显式调用 Dispose()(常用 using 保证异常路径也会调用),避免依赖 GC 的不确定性时机。
38.3 答题示例
“
IDisposable用于确定性释放资源(典型:文件句柄、数据库连接、Socket 等非托管资源;也可在Dispose中释放托管成员)。实现Dispose(),并常用using/try-finally保证异常时也会调用。若持有非托管句柄且担心调用方忘记Dispose,可在标准 Dispose 模式中提供终结器(~Type())作为后备,并在Dispose中调用GC.SuppressFinalize(this)——并非每个类都必须写终结器。”
38.4 关键词联想
- 非托管资源(Unmanaged Resources)
- 确定性终结(Deterministic Finalization)
Dispose()方法using语句(自动调用Dispose())try-finally模式- 双重释放模式(Dispose Pattern)
GC.SuppressFinalize()- 资源泄漏(Resource Leak)
- 析构函数(Finalizer)
IDisposable与IAsyncDisposable
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com