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

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

DDD
DDD原创
2025-01-04 02:35:42869浏览

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