C# 如何实现 IDisposable 接口_C# IDisposable 接口实现教程

月夜之吻
发布: 2025-11-03 11:20:02
原创
425人浏览过
正确实现IDisposable可避免资源泄漏,核心是通过Dispose(bool)区分托管与非托管资源释放,配合GC.SuppressFinalize和_disposed标志防止重复清理,并在using语句中自动调用Dispose。

c# 如何实现 idisposable 接口_c# idisposable 接口实现教程

在 C# 中,IDisposable 接口用于释放对象占用的非托管资源,例如文件句柄、网络连接或数据库连接。正确实现 IDisposable 能有效避免内存泄漏和资源浪费。下面介绍如何正确实现该接口。

为什么要实现 IDisposable

.NET 垃圾回收器(GC)能自动管理托管内存,但无法及时清理非托管资源。通过实现 IDisposable,你可以提供一个明确的机制来释放这些资源。

使用 using 语句时,IDisposable 的 Dispose 方法会自动调用,确保资源及时释放。

基本 IDisposable 实现结构

最简单的实现方式是定义类实现 IDisposable 接口,并提供 Dispose 方法:

public class MyResourceHolder : IDisposable
{
    private bool _disposed = false;
<pre class='brush:php;toolbar:false;'>// 实现 IDisposable
public void Dispose()
{
    Dispose(true);
    GC.SuppressFinalize(this);
}

// 受保护的虚方法,供派生类重写
protected virtual void Dispose(bool disposing)
{
    if (!_disposed)
    {
        if (disposing)
        {
            // 释放托管资源
            // 例如:一些实现了 IDisposable 的对象
        }

        // 释放非托管资源
        // 例如:CloseHandle, Marshal.FreeHGlobal 等

        _disposed = true;
    }
}

~MyResourceHolder()
{
    Dispose(false);
}
登录后复制

}

关键点说明

Dispose(bool disposing) 是核心模式:

ViiTor实时翻译
ViiTor实时翻译

AI实时多语言翻译专家!强大的语音识别、AR翻译功能。

ViiTor实时翻译 116
查看详情 ViiTor实时翻译
  • 传入 true 表示由用户代码调用,可安全释放托管和非托管资源
  • 传入 false 表示由终结器调用,此时只释放非托管资源(托管对象可能已被回收)
  • GC.SuppressFinalize(this) 防止重复清理,提升性能
  • 布尔标志 _disposed 防止重复释放

在 using 语句中使用

实现 IDisposable 后,可在 using 块中安全使用:

using (var resource = new MyResourceHolder())
{
    // 使用 resource
} // 自动调用 Dispose()
登录后复制

using 确保即使发生异常,Dispose 也会被执行。

继承场景下的处理

如果类可能被继承,应将 Dispose(bool) 设为 protected virtual,子类可重写以释放自己的资源:

protected override void Dispose(bool disposing)
{
    if (!_disposed)
    {
        if (disposing)
        {
            // 释放子类的托管资源
        }
<pre class='brush:php;toolbar:false;'>    // 释放子类的非托管资源

    _disposed = true;
}

base.Dispose(disposing);
登录后复制

}

基本上就这些。只要遵循“dispose pattern”,就能安全可靠地管理资源。

以上就是C# 如何实现 IDisposable 接口_C# IDisposable 接口实现教程的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号