Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Harus Melaksanakan IDisposable dengan Betul dalam C#?

Bagaimanakah Saya Harus Melaksanakan IDisposable dengan Betul dalam C#?

Susan Sarandon
Lepaskan: 2025-01-04 20:04:42
asal
208 orang telah melayarinya

How Should I Correctly Implement IDisposable in C#?

Pelaksanaan IDisposable yang Betul

Alat analisis kod anda menggesa anda untuk melaksanakan IDisposable dengan betul dalam kelas Pengguna anda. Ralat ini dicetuskan apabila IDisposable tidak dilaksanakan dengan betul. Mesej ralat CA1063 secara khusus menasihatkan menyediakan pelaksanaan Dispose(bool) yang boleh dibatalkan atau menandakan jenis sebagai dimeterai.

Memahami IDisposable

Disposable ialah antara muka dalam .NET yang mewakili keupayaan objek untuk melepaskan sumber yang tidak terurus. Sumber yang tidak diurus biasanya merupakan komponen bukan CLR seperti pemegang fail atau sambungan pangkalan data. Melaksanakan IDisposable membolehkan pembersihan dan pelepasan sumber ini dengan betul.

Pelaksanaan Betul

Pendekatan yang disyorkan untuk melaksanakan IDisposable ialah:

  • Isytihar kaedah Dispose(): Kaedah ini harus terbuka dan melaksanakan Antara muka IDisposable.
  • Laksanakan Dispose(bool disposing): Kaedah maya yang dilindungi ini ialah pelaksanaan boleh tolak yang memerlukan hujah boolean (disposing) untuk menunjukkan sama ada sumber terurus atau kedua-dua sumber terurus dan tidak terurus harus dibersihkan.
  • Buang sumber terurus dalam Buang(bool pelupusan): Dalam pelaksanaan Dispose(bool disposing), gunakan pernyataan bersyarat untuk menentukan sama ada pelupusan adalah benar (sumber terurus sahaja) atau palsu (sumber asli sahaja).
  • Pangkalan panggilan. Lupuskan(lupuskan) dalam kelas terbitan: Dalam kelas yang terbit daripada kelas asas IDisposable, ganti Dispose(bool pelupusan) dan pangkalan panggilan.Buang(lupuskan) untuk memastikan sumber dikeluarkan dengan betul.

Memohon pada Kod Anda

Dalam kes khusus anda, tiada sumber tidak terurus digunakan dalam kelas Pengguna anda. Oleh itu, melaksanakan IDisposable tidak diperlukan melainkan anda memutuskan untuk menambah kefungsian yang memerlukan pengendalian sumber yang tidak terurus.

Di bawah ialah contoh cara melaksanakan IDisposable dengan betul dalam kod anda:

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
    }

    // ...
}
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimanakah Saya Harus Melaksanakan IDisposable dengan Betul dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan