Delegasi (Panduan Pemrograman C#)

Delegasi adalah jenis menyatakan referensi ke metode dengan daftar parameter dan jenis pengembalian tertentu. Saat membuat instans delegasi, Anda dapat mengaitkan instansnya dengan metode apa pun dengan tanda tangan dan jenis pengembalian yang kompatibel. Anda dapat meminta (atau memanggil) metodeitu melalui instans delegasi.

Delegasi digunakan untuk meneruskan metode sebagai argumen ke metode lain. Penangan aktivitas tidak lebih dari metode yang dipanggil melalui delegasi. Anda membuat metode kustom, dan kelas seperti kontrol windows dapat memanggil metode Anda saat terjadi peristiwa tertentu. Contoh berikut menunjukkan deklarasi delegasi:

public delegate int PerformCalculation(int x, int y);

Metode apa pun dari kelas atau struktur yang dapat diakses yang cocok dengan jenis delegasi dapat ditetapkan ke delegasi tersebut. Metode ini dapat berupa metode statis atau instans. Fleksibilitas ini berarti Anda dapat mengubah panggilan metode secara terprogram, atau memasukkan kode baru ke kelas yang ada.

Catatan

Dalam konteks metode kelebihan beban, tanda tangan metode tidak menyertakan nilai kembalian. Tetapi dalam konteks delegasi, tanda tangan memang menyertakan nilai kembalian. Dengan kata lain, metode harus memiliki jenis pengembalian yang sama dengan delegasi.

Kemampuan untuk merujuk ke metode sebagai parameter membuat delegasi ideal untuk menentukan metode panggilan balik. Anda dapat menulis metode yang membandingkan dua objek dalam aplikasi Anda. Metode tersebut dapat digunakan dalam delegasi untuk algoritma pengurutan. Karena kode perbandingan terpisah dari pustaka, metode pengurutan bisa lebih umum.

Penunjuk fungsi ditambahkan ke C# 9 untuk skenario serupa, di mana Anda memerlukan kontrol lebih besar atas konvensi pemanggilan. 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.

Gambaran Umum Delegasi

Delegasi memiliki properti berikut:

  • Delegasi mirip dengan penunjuk fungsi C++, tetapi delegasi sepenuhnya berorientasi objek, dan tidak seperti penunjuk C++ ke fungsi anggota, delegasi merangkum instans objek dan metode.
  • Delegasi memungkinkan metode diteruskan sebagai parameter.
  • Delegasi dapat digunakan untuk menentukan metode panggilan balik.
  • Delegasi dapat dirangkai bersama; misalnya, beberapa metode dapat dipanggil berdasarkan satu peristiwa.
  • Metode tidak harus cocok tepat dengan jenis delegasi itu. Untuk informasi selengkapnya, lihat Menggunakan Variansi di Delegasi.
  • Ekspresi Lambda adalah cara yang lebih ringkas untuk menulis blok kode sebaris. Ekspresi Lambda (dalam konteks tertentu) dikompilasi ke jenis delegasi. Untuk informasi selengkapnya tentang ekspresi lambda, lihat Ekspresi Lambda.

Di Bagian Ini

Spesifikasi Bahasa C#

Untuk informasi selengkapnya, lihat Peristiwa dalam Spesifikasi Bahasa C#. Spesifikasi bahasa adalah sumber definitif untuk sintaks dan penggunaan C#.

Lihat juga