Cara membersihkan sumber daya yang tidak terkelola di C # [duplikat]
Saya Memiliki kelas ini:
public class A
{
//Some logic code here
}
Pertanyaan saya adalah bagaimana saya bisa membuang atau menghancurkan objek yang dibuat berdasarkan kelas ini setelah keluar dari ruang lingkup?
Sebagai contoh:
A a = new A();
//some code here
setelah itu //some code here
saya ingin a
objek untuk dihancurkan atau dibuang dan melepaskan memori yang dialokasikan.
Jawaban
Saya akan mengabaikan judul dan berkonsentrasi pada isi pertanyaan karena tampaknya jelas dari pertanyaan apa masalahnya.
Jawaban singkatnya: Anda tidak. Ini akan ditangani secara otomatis oleh pemulung jika dianggap perlu. (Anda tidak perlu menjalankan pengumpul sampah. Itu terjadi secara otomatis.)
Pengumpul sampah kemudian mencari entitas yang telah keluar dari ruang lingkup, seperti a
dalam contoh Anda, dan akan membebaskan ruang yang mereka gunakan. Ini kemudian akan melihat bahwa internal dari a
juga, jelas, keluar dari ruang lingkup (kecuali mereka direferensikan di tempat lain dalam kode Anda), dan menanganinya.
Karena itu, saat Anda menggunakan variabel kelas yang menerapkan Dispose
, sebaiknya panggil Dispose
secara eksplisit atau gunakan using
blok untuk menyelesaikannya. Anda juga dapat menerapkan finalizer yang akan dijalankan saat a
dibuang. Tapi sepertinya bukan itu yang kamu tanyakan.