Cara membersihkan sumber daya yang tidak terkelola di C # [duplikat]

Jan 20 2021

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 heresaya ingin aobjek untuk dihancurkan atau dibuang dan melepaskan memori yang dialokasikan.

Jawaban

1 ispiro Jan 20 2021 at 03:55

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 adalam contoh Anda, dan akan membebaskan ruang yang mereka gunakan. Ini kemudian akan melihat bahwa internal dari ajuga, 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 Disposesecara eksplisit atau gunakan usingblok untuk menyelesaikannya. Anda juga dapat menerapkan finalizer yang akan dijalankan saat adibuang. Tapi sepertinya bukan itu yang kamu tanyakan.