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

Bilakah Anda Harus Melaksanakan IDisposable dalam C#?

DDD
Lepaskan: 2025-01-04 02:35:42
asal
864 orang telah melayarinya

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();
    }
}
Salin selepas log masuk

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();
        }
    }
}
Salin selepas log masuk

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 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan