Direkomendasikan, 2024

Pilihan Editor

Perbedaan Antara membuang () dan menyelesaikan () dalam C #

Metode membuang () dan menyelesaikan () adalah metode C # yang digunakan untuk membebaskan sumber daya yang tidak dikelola yang dimiliki oleh suatu objek. Metode dispose () didefinisikan di dalam antarmuka IDisposable sedangkan, metode finalize () didefinisikan di dalam objek kelas. Perbedaan utama antara dispose () dan finalize () adalah bahwa metode dispose () harus secara eksplisit dipanggil oleh pengguna sedangkan, metode finalize () dipanggil oleh pengumpul sampah, tepat sebelum objek dihancurkan. Mari kita pelajari beberapa perbedaan lain di antara mereka dengan bantuan grafik perbandingan yang ditunjukkan di bawah ini.

Grafik perbandingan

Dasar untuk Perbandinganbuang ()menyelesaikan ()
DidefinisikanMetode buang () didefinisikan dalam antarmuka antarmuka IDisposable.Metode finalize () id didefinisikan dalam kelas java.lang.object.
Sintaksispublic void Buang () {
// Buang kode di sini
}
batal diselesaikan finalisasi () {
// kode finalisasi di sini
}
DipanggilMetode buang () dipanggil oleh pengguna.Metode finalize () dipanggil oleh pemulung.
TujuanMetode dispose () digunakan untuk membebaskan sumber daya yang tidak dikelola setiap kali dipanggil.Metode finalize () digunakan untuk membebaskan sumber daya yang tidak dikelola sebelum objek dihancurkan.
PelaksanaanMetode dispose () akan diimplementasikan setiap kali ada metode close ().Metode finalize () akan diterapkan untuk sumber daya yang tidak dikelola.
Akses specifierMetode buang () dinyatakan sebagai publik.Metode finalize () dinyatakan sebagai pribadi.
TindakanMetode buang () lebih cepat dan langsung membuang objek.Metode finalisasi lebih lambat dibandingkan dengan membuang
PerformaMetode disposes () melakukan tindakan instan karenanya, tidak mempengaruhi kinerja situs web.Metode menyelesaikan () menjadi lebih lambat memengaruhi kinerja situs web.

Definisi buang ()

Metode dispose () melepaskan sumber daya yang tidak dikelola yang dipegang oleh objek kelas. Sumber daya yang tidak dikelola adalah file, koneksi data, dll. Metode dispose () dideklarasikan di antarmuka IDisposeable dan diimplementasikan oleh kelas dengan mengimplementasikan antarmuka IDisposable. Metode ini tidak dipanggil secara otomatis. Programmer harus mengimplementasikannya secara manual ketika Anda membuat kelas khusus yang akan digunakan oleh orang lain. Metode ini memiliki sintaks berikut:

 public void dispose () {// Buang kode di sini} 

Dalam sintaks di atas, Anda dapat mengamati bahwa metode ini dinyatakan sebagai publik. Itu karena metode ini didefinisikan dalam antarmuka IDisposable dan itu harus diimplementasikan oleh kelas yang mengimplementasikan antarmuka ini. Jadi, untuk menyediakan aksesibilitas ke kelas pelaksana, metode ini dinyatakan sebagai publik.

Metode ini dipanggil secara manual oleh kode program karena diterapkan untuk memohon. Kinerja metode cepat, dan secara instan membebaskan sumber daya yang dimiliki oleh objek kelas.

Definisi finalisasi ()

Metode finalize () didefinisikan dalam kelas objek . Ini digunakan untuk kegiatan pembersihan. Metode ini disebut oleh pengumpul sampah ketika referensi suatu objek tidak digunakan untuk waktu yang lama. Pengumpul sampah membebaskan sumber daya yang dikelola secara otomatis tetapi jika Anda ingin membebaskan sumber daya yang tidak dikelola seperti pegangan file, koneksi data, dll., Metode penyelesaian harus diimplementasikan secara manual. Pengumpul sampah memanggil metode finalize () tepat sebelum itu menghancurkan objek sepenuhnya.

Sintaks metode finalize ():

 finalisasi batal terlindungi () {// kode finalisasi di sini} 

Dalam sintaks di atas, metode finalize () dinyatakan sebagai terproteksi. Alasan di balik ini adalah, metode finalize () tidak boleh diakses dari luar kelas, dan itu hanya harus dapat diakses oleh pengumpul sampah.

Metode finalize () memengaruhi biaya kinerja karena tidak membebaskan memori secara instan. Dalam C # metode final disebut secara otomatis dengan destruktor.

Perbedaan Utama Antara membuang () dan menyelesaikan ()

  1. Metode buang () didefinisikan dalam antarmuka IDisposable . Di sisi lain, metode finalize () didefinisikan dalam objek kelas.
  2. Metode dispose () harus secara manual dipanggil di dalam kode oleh seorang programmer, sedangkan metode finalisasi secara otomatis dipanggil oleh pengumpul sampah sebelum menghancurkan objek.
  3. Metode buang bisa dipanggil kapan saja, sedangkan metode penyelesaian dipanggil oleh pengumpul sampah ketika menemukan bahwa objek itu belum dirujuk untuk waktu yang lama.
  4. Metode buang () diimplementasikan di kelas setelah mengimplementasikan antarmuka IDisposable. Metode finalize () harus diimplementasikan hanya untuk sumber daya yang tidak dikelola karena sumber daya yang dikelola secara otomatis dibebaskan oleh pemulung.
  5. Penentu akses metode dispose () bersifat publik karena didefinisikan dalam antarmuka IDisposable dan akan diimplementasikan oleh kelas yang mengimplementasikan antarmuka ini karenanya, harus publik. Di sisi lain, metode finalize () telah memproteksi akses specifier sehingga tidak dapat diakses oleh anggota di luar kelas.
  6. Metode buang () cepat dan membebaskan objek secara instan karenanya, itu tidak mempengaruhi biaya kinerja. Metode finalize () lebih lambat dan tidak membebaskan sumber daya yang dimiliki oleh objek secara instan.

Kesimpulan:

Disarankan untuk menggunakan metode buang () di atas metode menyelesaikan () karena lebih cepat daripada menyelesaikan. Juga, itu bisa dipanggil kapan saja, saat dibutuhkan.

Top