Sebelum membaca tulisan multicast delegate, sebaiknya teman-teman membaca dulu tulisan saya sebelumnya di sini. Tulisan tersebut wajib teman-teman fahami dulu sebelum belajar materi multicast delegate. Sebagai materi tambahan, teman-teman juga bisa membaca tulisan saya di sini yang membahas tentang keuntungan menggunakan delegate dan skenario penggunaannya.
Dalam tulisan sebelumnya, kita membuat sebuah delegate yang diberi nama “Calculator”.
1 2 | //Deklarasi delegate Calculator public delegate int Calculator(int a, int b); |
Untuk menyimpan referensi fungsi ke dalam sebuah objek delegate, kita melakukannya dengan cara seperti berikut.
1 2 | //Membuat objek delegate dengan melewatkan argumen fungsi "Tambah" kemudian //menugaskan objek delegate tersebut pada variabel "calculator" yang bertipe //delegate "Calculator" Calculator calculator = Tambah; |
Atau
1 2 3 4 5 | //Mendeklarasikan variabel "calculator" bertipe delegate "Calculator" Calculator calculator; //Membuat objek delegate dengan melewatkan argumen fungsi "Tambah", kemudian //menugaskan objek delegate tersebut pada variabel "calculator" yang bertipe //delegate "Calculator" calculator = Tambah; |
Multicast delegate adalah kemampuan delegate untuk menyimpan referensi fungsi lebih dari satu. Ketika delegate dipanggil, fungsi-fungsi yang referensinya disimpan tadi bisa dipanggil sekaligus. Untuk menambah referensi gunakanlah operator “+=”. Untuk menghapus referensi gunakanlah operator “-+”. Perhatikan contoh berikut.
1 2 3 4 5 6 | //Menambah referensi fungsi calculator += Tambah; calculator += Kurang; //Menghapus referensi fungsi "Tambah" calculator -= Tambah; |
Contoh Kode Sumber untuk Melakukan Multicast Delegate
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace MulticastApp { class Program { //Deklarasi delegate public delegate void Calculator(int a, int b); static void Main(string[] args) { int angka1 = 3; int angka2 = 5; Calculator calculator=null; //Referensi fungsi tambah ditugaskan pada delegate calculator calculator += Tambah; //Referensi fungsi kali ditugaskan pada delegate calculator calculator += Kali; //Memanggil delegate calculator(angka1, angka2); Console.ReadKey(); } static void Tambah(int a, int b) { Console.WriteLine("Hasil penjumlahan : " + (a+b)); } static void Kali(int a, int b) { Console.WriteLine("Hasil perkalian : " + a*b); } } } |
Tampilan Program Ketika Dijalankan

Ketika delegate dipanggil, semua fungsi yang referensinya ada di dalam objek delegate, akan dipanggil satu per satu. Pemanggilan dilakukan berurutan sesuai dengan urutan fungsi ketika ditambahkan ke dalam delegate.
Sebagai catatan, fungsi yang digunakan dalam multicast delegate biasanya memilikit tipe balikan void(tidak mengembalikan nilai). Jika fungsi yang digunakan memiliki nilai balikan, maka delegate hanya akan mengembalikan nilai dari fungsi yang ditambahkan terakhir.
Alhamdulillah, semua materi tentang delegate yang ingin saya tulis sudah saya sampaikan.
- Penjelasan dasar-dasar delegate yang saya tulis di sini
- Keuntungan menggunakan delegate dan skenario penggunaanya yang saya tulis di sini
- Multicast delegate.
Sebenarnya, selain ketiga materi di atas, ada beberapa materi lagi yang harus teman-teman pelajari untuk menguasai delegate. Tetapi, sekarang saya masih belum tertarik untuk menuliskannya.
Jika ada yang ingin ditanyakan, silahkan hubungi saya melalui WhatsApp atau kita diskusi di komentar. Semoga bermanfaat, terima kasih.
[…] Menggunakan Delegate dan Skenario PenggunaannyaMulticast Delegate dalam Bahasa C#Cara Menaklukan Bug "Dewa"Membuat Media Player Menggunakan C#Membuat Aplikasi Web Browser […]