首頁 >後端開發 >C++ >C#中應該如何正確實作IDisposable?

C#中應該如何正確實作IDisposable?

Susan Sarandon
Susan Sarandon原創
2025-01-04 20:04:42182瀏覽

How Should I Correctly Implement IDisposable in C#?

IDisposable 的正確實作

您的程式碼分析工具會提示您在 User 類別中正確實作 IDisposable。當 IDisposable 未正確實作時會觸發此錯誤。 CA1063 錯誤訊息特別建議提供 Dispose(bool) 的可重寫實作或將類型標記為密封。

了解 IDisposable

Disposable 是 .NET 中的一個接口,表示對象釋放非託管資源的能力。非託管資源通常是非 CLR 元件,例如檔案句柄或資料庫連線。實作 IDisposable 可以正確清理和釋放這些資源。

正確實作

實作IDisposable 的建議方法是:

  • 宣告一個方法:
  • 宣告方法方法應該是公共的並實作IDisposable 介面。
  • 實作Dispose(bool dispose): 此受保護的虛擬方法是一個可重寫的實現,它採用布林參數(dispose) 來指示是否應託管資源或同時託管和非託管資源。清理完畢。
  • 在Dispose(bool disducing) 中處置託管資源: 內Dispose(bool dispose) 實現,使用條件語句來確定dispose 是true(僅限託管資源)還是false(僅限託管資源本機資源)。
在衍生類別中呼叫base.Dispose(disusing) :

在從IDisposable 基類派生的類別中,重寫Dispose(bool dispose) 並呼叫base.Dispose(disusing) 以確保資源正確已發布。

應用於您的程式碼

在您的特定情況下,您的 User 類別中沒有使用非託管資源。因此,除非您決定新增需要非託管資源處理的功能,否則沒有必要實作 IDisposable。
public class User : IDisposable
{
    // ...

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

    protected virtual void Dispose(bool disposing)
    {
        if (disposing) 
        {
            // No managed resources to dispose
        }
        // No native resources to dispose
    }

    // ...
}
以下是如何在程式碼中正確實作 IDisposable 的範例:

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

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn