Bagikan melalui


Pengantar delegasi dan peristiwa di C#

Delegasi menyediakan mekanisme late binding di .NET. Late Binding berarti Anda membuat algoritma di mana pemanggil juga memberikan setidaknya satu metode yang mengimplementasikan bagian dari algoritma.

Misalnya, pertimbangkan untuk mengurutkan daftar bintang dalam aplikasi astronomi. Anda dapat memilih untuk mengurutkan bintang-bintang berdasarkan jaraknya dari bumi, atau besarnya bintang, atau kecerahan yang dirasakan.

Dalam semua kasus tersebut, metode Sort() pada dasarnya melakukan hal yang sama: mengatur item dalam daftar berdasarkan beberapa perbandingan. Kode yang membandingkan dua bintang berbeda untuk setiap urutan sortir.

Solusi semacam ini telah digunakan dalam perangkat lunak selama setengah abad. Konsep delegasi bahasa pemrogram C# menyediakan dukungan bahasa pemrogram kelas satu, dan keamanan jenis di sekitar konsep.

Seperti yang akan Anda lihat nanti dalam seri ini, kode C# yang Anda tulis untuk algoritma seperti ini adalah jenis yang aman. Pengompilasi memastikan bahwa jenis cocok untuk argumen dan jenis pengembalian.

Penunjuk fungsi mendukung skenario serupa, di mana Anda memerlukan kontrol lebih besar atas konvensi panggilan. Kode yang terkait dengan suatu delegasi dipanggil menggunakan metode virtual yang ditambahkan ke jenis delegasi. Dengan menggunakan penunjuk fungsi, Anda dapat menentukan konvensi yang berbeda.

Tujuan Desain Bahasa Pemrogram untuk Delegasi

Perancang bahasa pemrogram menyebutkan beberapa tujuan untuk fitur yang akhirnya menjadi delegasi.

Tim menginginkan konstruksi bahasa pemrogram umum yang dapat digunakan untuk algoritma late binding. Delegasi memungkinkan pengembang untuk mempelajari satu konsep, dan menggunakan konsep yang sama di berbagai masalah perangkat lunak.

Kedua, tim ingin mendukung panggilan metode tunggal dan multicast. (Delegasi multicast adalah delegasi yang menyatukan beberapa panggilan metode. Anda akan melihat contohnya nanti di seri ini.)

Tim ingin delegasi mendukung keamanan jenis yang sama yang diharapkan pengembang dari semua konstruksi C#.

Akhirnya, tim mengenali pola peristiwa adalah salah satu pola khusus di mana delegasi, atau algoritma late binding, berguna. Tim ingin memastikan kode untuk delegasi dapat memberikan dasar untuk pola peristiwa .NET.

Hasil dari semua pekerjaan itu adalah delegasi dan dukungan peristiwa di C# dan .NET.

Artikel selanjutnya dalam seri ini akan membahas fitur bahasa pemrogram, dukungan pustaka, dan idiom umum yang digunakan saat Anda bekerja dengan delegasi dan peristiwa. Anda akan mempelajari tentang:

  • Kata kunci delegate dan kode apa yang dihasilkannya.
  • Fitur-fitur di kelas System.Delegate, dan bagaimana fitur-fitur tersebut digunakan.
  • Cara membuat delegasi yang aman untuk jenis.
  • Cara membuat metode yang dapat dipanggil melalui delegasi.
  • Cara bekerja dengan delegasi dan peristiwa dengan menggunakan ekspresi lambda.
  • Bagaimana delegasi menjadi salah satu blok penyusun untuk LINQ.
  • Bagaimana delegasi adalah dasar untuk pola peristiwa .NET, dan bagaimana perbedaannya.

Mari kita mulai.

Berikutnya