首页 > 后端开发 > C++ > 何时应该在 C# 中实现 IDisposable?

何时应该在 C# 中实现 IDisposable?

DDD
发布: 2025-01-04 02:35:42
原创
864 人浏览过

When Should You Implement IDisposable in C#?

正确的处置方式:实现 IDisposable

实现 IDisposable 可以实现非托管资源和一次性资源的确定性释放。在您的代码片段中,User 类不处理非托管资源或一次性引用,因此不需要处置。这可以通过将类标记为密封来解决,从而有效地防止派生类重写 IDisposable。

对于更详细的示例,让我们考虑一个名为 ResourceManager 的类,它管理非托管资源(例如文件句柄)和 IDisposable引用(例如,数据库连接)。

将 IDisposable 与非托管结合使用资源:

public class ResourceManager : IDisposable
{
    private FileStream fileStream;

    public ResourceManager()
    {
        // Allocate and open the file handle
        fileStream = new FileStream("myfile.txt", FileMode.Open);
    }

    public void Dispose()
    {
        Dispose(true);
        GC.SuppressFinalize(this);
    }

    protected virtual void Dispose(bool disposing)
    {
        if (disposing)
        {
            // Free managed resources
            fileStream?.Close();
            fileStream?.Dispose();
        }
        // Free native resources
        fileStream.Dispose();
    }
}
登录后复制

将 IDisposable 与一次性引用一起使用:

public class ResourceManager : IDisposable
{
    private DisposableReference reference;

    public ResourceManager()
    {
        // Obtain the disposable reference
        reference = new DisposableReference();
    }

    public void Dispose()
    {
        Dispose(true);
        GC.SuppressFinalize(this);
    }

    protected virtual void Dispose(bool disposing)
    {
        if (disposing)
        {
            // Free managed resources
            reference?.Dispose();
        }
    }
}
登录后复制

以上是何时应该在 C# 中实现 IDisposable?的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板