Menguasai Pengurusan Sumber di C# dengan dan Finalize
Dispose
dan Finalize
, membimbing anda pada pelaksanaan yang betul. Dispose
Memahami keperluan untuk finalisasi
Finalisasi () adalah penting untuk mengendalikan sumber yang tidak diurus. Walau bagaimanapun, walaupun kelas yang menguruskan hanya sumber yang diuruskan mungkin memerlukan finalisasi jika sumber -sumber yang diuruskan secara dalaman berinteraksi dengan sumber yang tidak diurus. Pertimbangan yang teliti adalah kunci. ~ClassName()
sumber yang diuruskan dan tidak diurus
Keputusan untuk memasukkan engsel finalisasi sama ada kelas anda secara langsung atau tidak langsung menggunakan sumber yang tidak diurus. Sumber yang tidak diurus, tidak seperti yang diuruskan oleh Pemungut Sampah (GC), termasuk pemegang fail, sambungan pangkalan data, dan soket rangkaian. Kehadiran mereka sangat mencadangkan keperluan untuk finalisasi.
untuk pembersihan sumber yang diuruskan IDisposable
walaupun tanpa penggunaan sumber yang tidak diurus secara langsung, melaksanakan antara muka
, memastikan pelupusan yang betul. Walau bagaimanapun, IDisposable
sahaja tidak memerlukan finalisasi. using
IDisposable
Contoh kod (ditinggalkan untuk keringkasan) menunjukkan kelas tanpa penggunaan sumber yang tidak diurus secara langsung. Oleh itu, finalisasi tidak perlu; Kaedah
cukup untuk pelepasan sumber yang diuruskan.
Dispose
Dispose
kaedah
. Contohnya mempamerkan panggilan automatik dalam blok Dispose
. using
using
Kelas mungkin secara tidak langsung menggunakan sumber yang tidak dikendalikan melalui kebergantungannya. Walaupun
(contohnya) melaksanakan, menyiratkan penggunaan sumber yang tidak diurus, ini tidak selalu jelas. Penggunaan WebClient
dan kelas yang serupa untuk pengurusan sumber yang tidak diurus dalaman tidak secara automatik mengarahkan finalisasi. IDisposable
SafeHandle
untuk kelas yang berinteraksi dengan sumber yang tidak diurus:
IDisposable
yang disyorkan. Dispose
kaedah, walaupun tanpa sumber yang tidak diurus, untuk menyokong penggunaan pelanggan using
pernyataan. Atas ialah kandungan terperinci Bilakah saya harus menggunakan kaedah C. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!