Disyorkan, 2024

Pilihan Editor

Perbezaan Antara membuang () dan memuktamadkan () dalam C #

Kaedah melupuskan () dan memuktamadkan () adalah kaedah C # yang dipanggil untuk membebaskan sumber yang tidak dikendalikan oleh objek. Kaedah buang () ditakrifkan di dalam antara muka IDisposable sedangkan, kaedah menyelesaikan () ditakrifkan di dalam objek kelas. Perbezaan utama antara melupuskan () dan memuktamadkan () adalah bahawa kaedah buang () harus diterangkan secara eksplisit oleh pengguna sedangkan kaedah menyelesaikan () dipanggil oleh pengumpul sampah, sebelum objek dimusnahkan. Marilah kita mengkaji beberapa perbezaan lain di antara mereka dengan bantuan carta perbandingan yang ditunjukkan di bawah.

Carta Perbandingan

Asas untuk Perbandinganbuang ()memuktamadkan ()
DitakrifkanKaedah buang () ditakrifkan dalam antara muka antara muka IDisposable.Kaedah menyelesaikan () id ditakrifkan dalam kelas java.lang.object.
SintaksKekosongan awam Lupuskan () {
// Buang kod di sini
}
tidak sah dilindungi () {
/ // kod penarafan di sini
}
TerlibatKaedah buang () digunakan oleh pengguna.Kaedah memuktamadkan () dipanggil oleh pemungut sampah.
TujuanKaedah buang () digunakan untuk membebaskan sumber yang tidak diurus bila diminta.Kaedah akhir () digunakan untuk membebaskan sumber yang tidak dikawal sebelum objek dimusnahkan.
PelaksanaanKaedah buang () akan dilaksanakan apabila terdapat kaedah close ().Kaedah akhir () akan dilaksanakan untuk sumber yang tidak dikelola.
Akses pengecualianKaedah buang () diisytiharkan sebagai awam.Kaedah akhir () diisytiharkan sebagai peribadi.
TindakanKaedah buang () adalah lebih cepat dan segera membuang objek.Kaedah akhir adalah lebih lambat berbanding dengan melupuskan
PrestasiKaedah pelupusan () melakukan tindakan seketika dengan itu, tidak mempengaruhi prestasi laman web.Kaedah memuktamadkan () menjadi lebih perlahan menjejaskan prestasi laman web.

Definisi melupuskan ()

Kaedah buang () melepaskan sumber-sumber yang tidak dikelola yang dipegang oleh objek kelas. Sumber yang tidak diurus adalah fail, sambungan data, dan sebagainya. Kaedah buang () diisytiharkan dalam antara muka IDisposeable dan ia dilaksanakan oleh kelas dengan melaksanakan interface IDisposable. Kaedah ini tidak dipanggil secara automatik. Pengaturcara perlu melaksanakannya secara manual apabila anda membuat kelas tersuai yang akan digunakan oleh orang lain. Kaedah ini mempunyai sintaks yang berikut:

 kekosongan awam buang () {// Dispose code here} 

Dalam sintaks di atas, anda boleh melihat bahawa kaedah itu diisytiharkan sebagai awam. Ini kerana kaedah ini ditakrifkan dalam antara muka IDisposable dan ia perlu dilaksanakan oleh kelas yang melaksanakan antara muka ini. Jadi, untuk menyediakan akses kepada kelas pelaksana, kaedah itu diisytiharkan sebagai awam.

Kaedah ini digunakan secara manual oleh kod program seperti yang dilaksanakan untuk digunakan. Prestasi kaedah adalah pantas, dan dengan serta-merta membebaskan sumber yang dipegang oleh objek kelas.

Definisi muktamad ()

Kaedah akhir () ditakrifkan dalam kelas objek . Ia digunakan untuk aktiviti pembersihan. Kaedah ini dipanggil oleh pengumpul sampah apabila rujukan sesuatu objek tidak digunakan untuk masa yang lama. Pemungut sampah membebaskan sumber yang diuruskan secara automatik tetapi jika anda ingin membebaskan sumber tidak diurus seperti pengendalian fail, sambungan data, dan lain-lain, kaedah akhir harus dilaksanakan secara manual. Pengumpul sampah memanggil kaedah menyelesaikan () sebelum ia memusnahkan objek sepenuhnya.

Sintaks kaedah menyelesaikan ():

 tidak sah dilindungi () {// kod pemformalan di sini} 

Dalam sintaks di atas, kaedah memuktamadkan () diisytiharkan sebagai dilindungi. Alasan di sebalik ini adalah, kaedah akhir () tidak boleh diakses dari luar kelas, dan ia hanya boleh diakses oleh pengumpul sampah.

Cara memuktamadkan () memengaruhi kos prestasi kerana ia tidak membebaskan memori dengan serta-merta. Dalam kaedah #akhirkan dipanggil secara automatik dengan pemusnah.

Perbezaan Utama Antara membuang () dan memuktamadkan ()

  1. Kaedah buang () ditakrifkan dalam antara muka IDisposable . Sebaliknya, kaedah menyelesaikan () ditakrifkan dalam objek kelas.
  2. Kaedah buang () perlu dipanggil secara manual di dalam kod oleh seorang pengaturcara, manakala kaedah memuktamadkan secara automatik dipanggil oleh pemungut sampah sebelum memusnahkan objek tersebut.
  3. Kaedah buang boleh digunakan pada bila-bila masa, sedangkan kaedah yang dimuktamadkan dipanggil oleh pengumpul sampah apabila mendapati bahawa objek tersebut tidak dirujuk untuk waktu yang lama.
  4. Kaedah buang () dilaksanakan dalam kelas selepas melaksanakan antara muka IDisposable. Kaedah akhir () perlu dilaksanakan hanya untuk sumber yang tidak dikelola kerana sumber yang diuruskan secara automatik dibebaskan oleh pengumpul sampah.
  5. Penyiasat akses bagi kaedah buang () adalah awam kerana ia ditakrifkan dalam antara muka IDisposable dan ia akan dilaksanakan oleh kelas yang melaksanakan antara muka ini dengan itu, ia mestilah umum. Sebaliknya, kaedah memuktamadkan () telah melindungi penunjuk akses supaya ia tidak dapat diakses oleh mana-mana ahli di luar kelas.
  6. Kaedah buang () adalah pantas dan membebaskan objek dengan serta-merta dengan itu, ia tidak menjejaskan kos prestasi. Kaedah memuktamadkan () lebih lambat dan tidak membebaskan sumber yang dipegang oleh objek dengan serta-merta.

Kesimpulan:

Adalah dicadangkan untuk menggunakan kaedah buang () melalui kaedah menyelesaikan () kerana ia lebih cepat daripada dimuktamadkan. Juga, ia boleh dipanggil pada bila-bila masa, apabila diperlukan.

Top