Disyorkan, 2024

Pilihan Editor

Perbezaan Antara Perwakilan dan Peristiwa dalam C #

penggunaan dan peristiwa menggunakan kedua-dua memainkan peranan penting dalam program yang didorong oleh acara. Perwakilan boleh merujuk kepada kaedah, dan ia agak serupa dengan penunjuk fungsi dalam C ++. Peristiwa memberitahu bahawa beberapa tindakan telah dilakukan. Perbezaan dasar antara perwakilan dan peristiwa adalah perwakilan yang memegang rujukan metode dan acara menyediakan cara untuk mengakses metode tersebut dengan menggunakan perwakilan.

Carta Perbandingan

Asas untuk PerbandinganPerwakilanPeristiwa
AsasSeorang perwakilan memegang rujukan kaedah.Acara ini merupakan abstraksi yang berlapis-lapis yang diberikan kepada perwakilan.
Sintaksperwakilan return_type delegate_name (parameter_list);event_delegate event_name;
Kata kunciSeorang perwakilan diisytiharkan menggunakan kata kunci "mewakilkan."Acara diisytiharkan menggunakan kata kunci "acara".
PerisytiharanPerwakilan diisytiharkan di luar mana-mana kelas.Acara dinyatakan di dalam kelas.
MemohonUntuk menggunakan kaedah ia harus dirujuk kepada perwakilan.Untuk menggunakan kaedah yang perlu diberikan kepada acara itu.
Kovarians dan ContravarianceMereka menyediakan fleksibiliti kepada para perwakilan.Tiada konsep sedemikian.
Accessor AcaraTiada konsep sedemikian.Mengurus senarai pengendali acara.
KetergantunganDelegasi adalah bebas daripada peristiwa.Acara tidak boleh dibuat tanpa perwakilan.

Definisi Delegasi

Dalam perwakilan C # digunakan sebagai penunjuk fungsi untuk merujuk kaedah. Ini adalah khusus objek yang merujuk kepada kaedah yang diberikan kepadanya. Perwakilan yang sama boleh digunakan untuk merujuk kaedah yang berbeza, kerana ia mampu memegang rujukan kaedah yang berbeza tetapi, satu demi satu. Kaedah yang akan digunakan oleh perwakilan ditentukan semasa runtime. Sintaks untuk mengisytiharkan perwakilan adalah seperti berikut:

 perwakilan return_type delegate_name (parameter_list); 

Di sini, return_type mengisytiharkan jenis nilai yang dikembalikan oleh kaedah, yang dipanggil oleh delegasi dan delegate_name adalah nama perwakilan. Parameter_list menentukan senarai parameter yang diperlukan oleh kaedah yang akan dipanggil oleh perwakilan.

Terdapat beberapa perkara penting yang perlu diingat mengenai perwakilan. Ia boleh memanggil mana-mana kaedah yang sepadan dengan tandatangannya dan jenis pemulangannya. Perwakilan boleh memanggil kedua-dua kaedah contoh atau kaedah statik. Jika ia memanggil kaedah contoh, ia perlu mengambil bantuan objek untuk menggunakan kaedah tersebut. Delegasi menyokong multicasting iaitu anda boleh berantai kaedah yang akan dipanggil secara automatik apabila perwakilan merujuk kepada mereka dipanggil. Anda hanya perlu membuat objek perwakilan dan menetapkan kaedah satu demi satu kepada rantaian menggunakan operator "+ =". Anda juga boleh tidak menggunakan kaedah menggunakan operator "- =".

Ciri-ciri yang menambah fleksibiliti tambahan kepada perwakilan adalah Kovarians dan Contravariance. Kovarians dan Contravariance membenarkan keadaan di mana jenis pemulangan dan tandatangan kaedah yang diperuntukkan kepada delegasi adalah berbeza daripada perwakilan.

  • Kovarians membolehkan anda menetapkan kaedah kepada perwakilan di mana kaedah pemulangan kaedah adalah kelas yang berasal dari kelas yang menentukan jenis pemulangan perwakilan.
  • Contravariance membolehkan anda menetapkan kaedah kepada perwakilan di mana jenis parameter dari kaedah adalah kelas asas kelas yang ditentukan sebagai parameter perwakilan.

Definisi Peristiwa

Peristiwa adalah tindakan yang dilakukan yang mengubah keadaan sesuatu objek. Peristiwa diisytiharkan menggunakan perwakilan, tanpa kehadiran perwakilan anda tidak dapat mengisytiharkan acara. Anda boleh mengatakan bahawa acara menyediakan enkapsulasi kepada perwakilan. Terdapat dua sebatian penting apabila berurusan dengan peristiwa yang merupakan acara dan acara pengendali. Sekiranya objek tertarik dengan peristiwa itu, maka ia akan mencatatkan acara pengendali acara itu. Dan apabila kejadian dipecat, pengendali acara berdaftar dipanggil. Pengisytiharan acara itu adalah seperti berikut:

 event_delegate event_name; 

Di sini, "peristiwa" ialah kata kunci yang menunjukkan pengisytiharan peristiwa. Seterusnya, event_delegate menunjukkan nama perwakilan yang menyokong acara tersebut. Kemudian, event_name adalah nama acara tersebut

Terdapat beberapa perkara penting yang perlu diingat semasa berurusan dengan peristiwa tersebut. Seperti perwakilan, acara juga boleh multicast iaitu pelbagai objek yang dirantai (didaftarkan) kepada seorang pengendali acara, bertindak balas apabila suatu peristiwa dinaikkan. Pengendali acara boleh ditambah ke rantai menggunakan pengendali "+ =" dan boleh tidak menggunakan operator "- =" Kaedah statik dan contoh boleh digunakan sebagai pengendali acara. Accessor acara boleh memberi anda kawalan pelaksanaan senarai pengendali acara.

Antara muka boleh mengandungi peristiwa. Peristiwa juga boleh menjadi abstrak sedangkan acara berasaskan aksesori tidak boleh abstrak. Acara ini boleh menjadi maya dan ditindih oleh kelas yang diturunkan.

Perbezaan Utama Antara Perwakilan dan Peristiwa di C #

  1. Delegasi adalah objek yang digunakan sebagai penunjuk fungsi untuk memegang rujukan kaedah. Sebaliknya, acara memberikan abstraksi kepada perwakilan.
  2. Kata kunci yang diperlukan untuk mengisytiharkan perwakilan adalah perwakilan sedangkan, kata kunci yang diperlukan untuk mengisytiharkan sesuatu peristiwa adalah peristiwa .
  3. Perwakilan diisytiharkan di luar kelas sedangkan, satu peristiwa diisytiharkan di dalam kelas.
  4. Untuk menggunakan kaedah menggunakan objek perwakilan, kaedah tersebut harus dirujuk kepada objek perwakilan. Sebaliknya, untuk menggunakan kaedah menggunakan objek acara, kaedah harus dirujuk ke objek acara.
  5. Kovarians dan Contravariance memberikan fleksibiliti tambahan kepada objek perwakilan. Sebaliknya, peristiwa tidak mempunyai konsep sedemikian.
  6. Accessor Acara mengendalikan senarai pengendali acara manakala delegasi tidak mempunyai konsep sedemikian.
  7. Delegasi adalah bebas pada peristiwa tetapi, peristiwa tidak boleh dibuat tanpa mewakilkan.

Kesimpulan:

Delegasi adalah berguna kerana mereka menyokong peristiwa, dan mereka menyediakan kemudahan pelaksanaan kaedah pada masa runtime. Accessor acara membolehkan kami menyegerakkan pengendali acara dalam aplikasi multithreading.

Top