Direkomendasikan, 2024

Pilihan Editor

Perbedaan Antara Delegasi dan Acara di C #

menggunakan delegasi dan acara keduanya memainkan peran penting dalam program yang digerakkan oleh acara. Delegasi dapat merujuk ke suatu metode, dan itu sangat mirip dengan fungsi pointer di C ++. Acara memberi tahu bahwa beberapa tindakan telah dilakukan. Perbedaan mendasar antara delegasi dan acara adalah bahwa delegasi memegang referensi metode dan acara menyediakan cara untuk mengakses metode itu menggunakan delegasi.

Grafik perbandingan

Dasar untuk PerbandinganDelegasiAcara
DasarSeorang delegasi memegang referensi metode.Acara ini merupakan abstraksi berlapis yang diberikan kepada para delegasi.
Sintaksisdelegate return_type delegate_name (parameter_list);event_delegasikan event_name;
Kata kunciDelegasi dideklarasikan menggunakan kata kunci "delegate."Suatu Acara dinyatakan menggunakan kata kunci "event".
PernyataanDelegasi dideklarasikan di luar kelas apa pun.Suatu acara dinyatakan di dalam kelas.
MemohonUntuk memohon metode itu harus dirujuk ke delegasi.Untuk memohon suatu metode harus ditugaskan ke acara tersebut.
Kovarian dan KontravarianMereka memberikan fleksibilitas kepada para delegasi.Tidak ada konsep seperti itu.
Pengakses AcaraTidak ada konsep seperti itu.Mengelola daftar penangan acara.
KetergantunganDelegasi tidak tergantung pada acara.Acara tidak dapat dibuat tanpa delegasi.

Definisi Delegasi

Dalam C # delegasi digunakan sebagai penunjuk fungsi untuk merujuk metode. Ini secara khusus objek yang merujuk ke metode yang ditugaskan untuk itu. Delegasi yang sama dapat digunakan untuk merujuk metode yang berbeda, karena ia mampu memegang referensi metode yang berbeda tetapi, satu per satu. Metode mana yang akan dipanggil oleh delegasi ditentukan pada saat runtime. Sintaks mendeklarasikan delegasi adalah sebagai berikut:

 delegate return_type delegate_name (parameter_list); 

Di sini, return_type menyatakan tipe nilai yang dikembalikan oleh metode, yang dipanggil oleh delegate dan delegate_name adalah nama dari delegate. Parameter_list menentukan daftar parameter yang diperlukan oleh metode yang akan dipanggil oleh delegasi.

Ada beberapa poin penting yang harus diingat tentang para delegasi. Itu dapat memanggil metode apa pun yang cocok dengan tanda tangannya dan jenis kembali. Seorang delegasi dapat memanggil metode instance atau metode statis. Jika memanggil metode instance, ia harus mengambil bantuan objek untuk memanggil metode. Delegasi mendukung multicasting yaitu Anda dapat menghubungkan metode yang akan dipanggil secara otomatis ketika delegasi yang merujuknya dipanggil. Anda hanya perlu membuat objek delegasi dan menetapkan metode satu demi satu ke rantai menggunakan operator "+ =". Anda juga dapat membatalkan rantai suatu metode menggunakan operator “- =”.

Fitur-fitur yang menambah fleksibilitas ekstra untuk delegasi adalah Covariance dan Contravariance. Covariance dan Contravariance memungkinkan kondisi di mana jenis pengembalian dan tanda tangan metode yang ditugaskan untuk mendelegasikan berbeda dari delegasi.

  • Kovarian memungkinkan Anda untuk menetapkan metode ke delegasi di mana tipe kembalinya metode adalah kelas yang berasal dari kelas yang menentukan tipe kembalinya delegasi.
  • Contravariance memungkinkan Anda untuk menetapkan metode kepada delegasi di mana tipe parameter metode adalah kelas dasar dari kelas yang ditentukan sebagai parameter delegasi.

Definisi Acara

Peristiwa adalah tindakan yang dilakukan yang mengubah keadaan suatu objek. Acara dideklarasikan menggunakan delegasi, tanpa kehadiran delegasi Anda tidak dapat mendeklarasikan acara. Anda dapat mengatakan bahwa suatu acara menyediakan enkapsulasi kepada para delegasi. Ada dua senyawa penting ketika berhadapan dengan event yang merupakan event dan event handler. Jika objek tertarik pada acara tersebut, maka itu mendaftarkan pengendali acara untuk acara tertentu. Dan setiap kali peristiwa dipecat, penangan acara terdaftar dipanggil. Deklarasi acara tersebut adalah sebagai berikut:

 event_delegasikan event_name; 

Di sini, "acara" adalah kata kunci yang menunjukkan pernyataan suatu acara. Selanjutnya, event_delegate menunjukkan nama delegasi yang mendukung acara tersebut. Kemudian, event_name adalah nama acara tersebut

Ada beberapa poin penting yang harus diingat ketika berhadapan dengan acara tersebut. Seperti halnya delegasi, acara juga bisa multicast yaitu beberapa objek yang dirantai (terdaftar) ke pengendali acara, merespons ketika suatu peristiwa dimunculkan. Penangan peristiwa dapat ditambahkan ke rantai menggunakan operator "+ =" dan dapat dilepas menggunakan operator "- =" Baik metode statis maupun instance dapat digunakan sebagai penangan peristiwa. Pengakses acara dapat memberi Anda kendali atas implementasi daftar pengendali event.

Antarmuka dapat berisi acara. Acara juga bisa abstrak sedangkan acara berbasis accessor tidak bisa abstrak. Acara bisa virtual dan ditimpa oleh kelas turunan.

Perbedaan Kunci Antara Delegasi dan Acara di C #

  1. Delegasi adalah objek yang digunakan sebagai penunjuk fungsi untuk menyimpan referensi metode. Di sisi lain, acara memberikan abstraksi kepada delegasi.
  2. Kata kunci yang diperlukan untuk mendeklarasikan delegasi adalah delegasi, sedangkan kata kunci yang diperlukan untuk mendeklarasikan suatu event adalah event .
  3. Delegasi dideklarasikan di luar kelas sedangkan, acara dinyatakan di dalam kelas.
  4. Untuk memanggil metode menggunakan objek delegasi, metode harus dirujuk ke objek delegasi. Di sisi lain, untuk memanggil metode menggunakan objek acara metode harus dirujuk ke objek acara.
  5. Kovarian dan Kontravarian memberikan fleksibilitas ekstra untuk objek delegasi. Di sisi lain, acara tidak memiliki konsep seperti itu.
  6. Event Accessor menangani daftar penangan event sedangkan delegate tidak memiliki konsep seperti itu.
  7. Delegasi bersifat independen pada acara tetapi, acara tidak dapat dibuat tanpa delegasi.

Kesimpulan:

Delegasi bermanfaat karena mendukung acara, dan mereka menyediakan fasilitas untuk mengeksekusi metode pada saat runtime. Accessor acara memungkinkan kita untuk menyinkronkan penangan acara dalam aplikasi multithreading.

Top