Rumah >pembangunan bahagian belakang >C++ >Bilakah Anda Harus Melaksanakan IDisposable dalam C#?

Bilakah Anda Harus Melaksanakan IDisposable dalam C#?

DDD
DDDasal
2025-01-04 02:35:42869semak imbas

When Should You Implement IDisposable in C#?

Melupuskan Cara Yang Betul: Melaksanakan IDisposable

Melaksanakan IDisposable membolehkan pelepasan deterministik sumber tidak terurus dan bahan pakai buang. Dalam coretan kod anda, kelas Pengguna tidak mengendalikan sumber yang tidak terurus atau rujukan boleh guna, jadi pelupusan tidak diperlukan. Ini boleh diselesaikan dengan menandakan kelas sebagai dimeterai, dengan berkesan menghalang kelas yang diperoleh daripada mengatasi IDisposable.

Untuk contoh yang lebih terperinci, mari kita pertimbangkan kelas yang dipanggil ResourceManager yang mengurus kedua-dua sumber yang tidak diurus (cth., pemegang fail) dan IDisposable rujukan (cth., sambungan pangkalan data).

Menggunakan IBuka guna dengan Sumber Tidak Terurus:

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();
    }
}

Menggunakan IBunga dengan Rujukan Pakai Buang:

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();
        }
    }
}

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

Kenyataan:
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