首頁 > 後端開發 > C++ > 何時應該在 C# 中實作 IDisposable?

何時應該在 C# 中實作 IDisposable?

DDD
發布: 2025-01-04 02:35:42
原創
845 人瀏覽過

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();
        }
    }
}
登入後複製
將IDisposable 與一次性引用一起使用:

以上是何時應該在 C# 中實作 IDisposable?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板