Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah saya boleh menggunakan antara muka idisposable di C#?

Bagaimanakah saya boleh menggunakan antara muka idisposable di C#?

Mary-Kate Olsen
Mary-Kate Olsenasal
2025-02-02 15:36:11313semak imbas

How Can I Properly Use the IDisposable Interface in C#?

Menguasai antara muka C antara muka dalam C# adalah penting untuk menguruskan sumber secara berkesan, terutamanya sumber yang tidak dikendalikan seperti pemegang fail, sambungan rangkaian, dan sambungan pangkalan data yang tidak dikumpulkan secara automatik. Walau bagaimanapun, faedahnya juga diperluaskan kepada sumber yang diuruskan, menawarkan beberapa kelebihan utama:

IDisposable

Sumber Sumber Segera:

pelaksanaan melibatkan pendekatan berstruktur:

IDisposable

Finalizer (~ myClass ()):
    Gunakan finalisasi (destructor) untuk mengendalikan pembersihan sumber yang tidak diurus. Ini bertindak sebagai jaring keselamatan jika
  1. tidak dipanggil secara eksplisit.

    Dispose()

    membuang () kaedah mengatasi:
  2. mengatasi kaedah
  3. . Kaedah ini harus memanggil kaedah

    yang dilindungi untuk mengendalikan kedua -dua pembersihan sumber yang diuruskan dan tidak diurus. Dispose() Dispose(bool disposing)

    Penindasan pemakaian:
  4. Dalam kaedah
  5. , hubungi

    . Ini menghalang pemungut sampah daripada menggunakan finalisasi selepas telah dipanggil, meningkatkan prestasi. Dispose() GC.SuppressFinalize(this) Dispose()

    Kaedah pelupusan (bool pelupusan) yang dilindungi:
  6. Kaedah penolong peribadi ini melakukan pembersihan sebenar. Parameter
  7. menunjukkan sama ada kaedah itu dipanggil dari

    (benar) atau finalisasi (palsu). Ini membolehkan anda melepaskan sumber yang dikendalikan secara kondusif hanya apabila dipanggil dari . disposing Dispose() Dispose()

    Contoh ilustrasi

mari kita pertimbangkan kelas menguruskan senarai rentetan:

Contoh ini menunjukkan amalan terbaik: Sumber yang diuruskan dikeluarkan apabila

adalah benar, dan finalizer bertindak sebagai sandaran untuk pembersihan sumber yang tidak dikendalikan. Panggilan

mengoptimumkan koleksi sampah. Ingatlah untuk menambah pembersihan sumber yang tidak diurus dalam kaedah
<code class="language-csharp">public class MyCollection : IDisposable
{
    private List<string> _theList = new List<string>();

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

    protected virtual void Dispose(bool disposing)
    {
        if (disposing)
        {
            _theList.Clear(); // Release managed resources
        }
        // Release unmanaged resources here (if any)
    }

    ~MyCollection()
    {
        Dispose(false);
    }
}</code>
seperti yang diperlukan. Menggunakan corak ini memastikan pengurusan sumber yang mantap dan cekap dalam aplikasi C# anda.

Atas ialah kandungan terperinci Bagaimanakah saya boleh menggunakan antara muka idisposable di 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