Delegate ที่เก็บ Reference ของมากกว่าหนึ่งเมธอด เรียกว่า Multicasting Delegate
ตัวอย่าง
using System;
delegate void myDelegate(int val1, int val2);
public class Demo
{
public static void CalAdd(int val1, int val2)
{
Console.WriteLine("{0} + {1} = {2}", val1, val2, val1 + val2);
}
public static void CalSub(int val1, int val2)
{
Console.WriteLine("{0} - {1} = {2}", val1, val2, val1 - val2);
}
}
public class Program
{
static void Main()
{
myDelegate d = new myDelegate(Demo.CalAdd);
d += new myDelegate(Demo.CalSub); // เพิ่มเมธอด
d(45, 70); // เรียกทั้งสอง
d -= new myDelegate(Demo.CalAdd); // ลบเมธอด
d(95, 70);
d += new myDelegate(Demo.CalSub);
d(88, 6);
d -= new myDelegate(Demo.CalAdd);
d(40, 20);
Console.Read();
}
}
Delegate เดิม: delegate void myDelegate(int val1, int val2);
ใช้ += เพิ่มเมธอด, -= ลบเมธอด