委托多播允许在一个委托中注册多个方法 在内部维护了一个的委托数组
实例化三个委托
InputStrDelegate delInStr1 = (p) =>
{
Console.WriteLine("委托多播:1" + " 参数:" + p);
};
InputStrDelegate delInStr2 = (p) =>
{
Console.WriteLine("委托多播:2" + " 参数:" + p);
};
InputStrDelegate delInStr3 = (p) =>
{
Console.WriteLine("委托多播:3" + " 参数:" + p);
};
合并委托多播需要使用Delegate类提供的Combine静态方法
InputStrDelegate delInStrMC =
Delegate.Combine(delInStr1, delInStr2) as InputStrDelegate;
delInStrMC = Delegate.Combine(delInStrMC, delInStr3) as InputStrDelegate;
移除委托多播需要使用Delegate类提供的Remove静态方法
delInStrMC = Delegate.Remove(delInStrMC, delInStr2) as InputStrDelegate;
C#同时也提供了运算符重载 + – += -=用来快速的进行委托多播的注册与移除
InputStrDelegate delInStrMC1 = delInStr1 + delInStr2;
delInStrMC1 = delInStrMC1 + delInStr3;
delInStrMC1 = delInStrMC1 - delInStr2;
InputStrDelegate delInStrMC2 = delInStr1;