Bagikan melalui


Pengantar delegasi dan peristiwa di C#

Delegasi menyediakan mekanisme pengikatan terlambat di .NET. Pelekatan Telat berarti Anda membuat algoritma di mana pemanggil juga menyediakan setidaknya satu metode yang mengimplementasikan sebagian dari algoritma.

Misalnya, pertimbangkan untuk mengurutkan daftar bintang dalam aplikasi astronomi. Anda dapat memilih untuk mengurutkan bintang-bintang berdasarkan jaraknya dari bumi, besar bintang tersebut, atau kecerahannya yang tampak.

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

Solusi semacam ini telah digunakan dalam perangkat lunak selama setengah abad. Konsep delegasi dalam bahasa C# menyediakan dukungan bahasa tingkat utama dan pengamanan tipe terkait konsep tersebut.

Seperti yang akan Anda lihat nanti dalam seri ini, kode C# yang Anda tulis untuk algoritma seperti ini adalah jenis yang aman. Pengkompilasi 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 deleget dipanggil menggunakan metode virtual yang melekat pada tipe deleget. Dengan menggunakan penunjuk fungsi, Anda dapat menentukan konvensi yang berbeda.

Tujuan Desain Bahasa untuk Delegasi

Perancang bahasa menyebutkan beberapa tujuan untuk fitur yang akhirnya berkembang menjadi fungsi delegate.

Tim menginginkan konstruksi bahasa umum yang dapat digunakan untuk algoritma pengikatan yang terlambat. 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 menautkan beberapa panggilan metode. Anda akan melihat contoh nanti dalam seri ini.)

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

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

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

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

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

Mari kita mulai.

Berikutnya