Di sini saya akan menjelaskan delegasi, delegasi multicast dan penggunaannya .. Delegasi adalah tipe yang menyimpan referensi metode dalam suatu objek. Ini juga disebut sebagai pointer fungsi tipe aman. Kita dapat mengatakan bahwa delegasi adalah tipe yang mendefinisikan metode tanda tangan.
Saat Anda membuat instance delegasi, Anda dapat mengaitkan instansinya dengan metode apa pun dengan tanda tangan yang kompatibel. Anda dapat meminta (atau memanggil) metode melalui instance delegate. Delegasi digunakan untuk meneruskan metode sebagai argumen ke metode lain. Penangan acara tidak lebih dari metode yang dipanggil melalui delegasi. Keuntungan menggunakan delegasi adalah, Meringkas panggilan metode dari pemanggil Penggunaan efektif delegasi meningkatkan kinerja aplikasi Digunakan untuk memanggil metode secara tidak sinkron. Ada beberapa properti delegasi tersebut
Delegates are like C++ function pointers but are type safe.
Delegates allow methods to be passed as parameters.
Delegates can be used to define callback methods.
Delegates can be chained together; for example, multiple methods can be called on a single event.
Methods do not have to match the delegate signature exactly.
delegate public type_of_delegate delegate_name () // Deklarasi
You can use delegates without parameters or with parameter list
If you are referring to the method with some data type then the delegate which you are declaring should be in the same format. This is why it is referred to as type safe function pointer. Here I am giving an example with String.
Contoh berikut menunjukkan operasi delegasi:
namespace MyDelegate
{
class Program
{
private delegate void Show(string s);
// Create a method for a delegate.
public static void MyDelegateMethod(string me
ssage)
{
System.Console.WriteLine(message);
}
static void Main(string[] args)
{
Show p = MyDelegateMethod;
p("My Delegate");
p.Invoke("My Delegate");
System.Console.ReadLine();
}
}
}
Apa itu Delegasi Multicast?
Ini adalah delegasi yang memegang referensi lebih dari satu metode. Delegasi multicast hanya boleh berisi metode yang mengembalikan batal, kalau tidak ada pengecualian run-time.
delegate void MyMulticastDelegate(int i, string s);
Class Class2
{
static void MyFirstDelegateMethod(int i, string s)
{
Console.WriteLine("My First Method");
}
static void MySecondDelegateMethod(int i, string s)
{
Console.WriteLine("My Second Method");
}
static void Main(string[] args)
{
MyMulticastDelegate Method= new MyMulticastDelegate(MyFirstDelegateMethod);
Method+= new MyMulticastDelegate (MySecondDelegateMethod);
Method(1,"Hi"); // Calling 2 Methodscalled
Method-= new MyMulticastDelegate (MyFirstDelegateMethod);
Method(2,"Hi"); //Only 2nd Method calling
}
}
Di sini Delegasi ditambahkan menggunakan operator + = dan dihapus menggunakan operator - =.
Jenis delegasi berasal dari kelas Delegasi di .NET Framework. Jenis delegasi disegel — mereka tidak dapat diturunkan. Karena delegasi instantiated adalah objek, ia dapat dikirimkan sebagai parameter, atau ditugaskan ke properti. Ini memungkinkan metode untuk menerima delegasi sebagai parameter, dan memanggil delegasi di lain waktu. Ini dikenal sebagai panggilan balik asinkron.