多播委托的理解
多播委托就是让一个委托能有若干个方法去执行,先看一个代码:
delegate int DelegateFunction(int a, int b);
class Program
{
static void Main(string[] args)
{
DelegateFunction test = new DelegateFunction(Add);
test += Minus;
Console.WriteLine(test(2, 1));
Console.ReadKey();
}
static int Add(int x, int y)
{
Console.Write("X + Y:");
return x + y;
}
static int Minus(int x, int y)
{
Console.Write("X - Y:");
return x - y;
}
}
用+=就可以建立多播委托,委托test原来有一个add方法,又+=一个Minus方法;
以上代码执行的结果是 X+Y:X-Y:1
Add方法的值没有返回回来,因为追加了委托之后就返回最后一个追加上的委托计算出的值;
需要用遍历才能让每个追加的委托返回值,需做以下修改
delegate int DelegateFunction(int a, int b);
class Program
{
static void Main(string[] args)
{
DelegateFunction test = new DelegateFunction(Add);
test += Minus;
foreach (DelegateFunction func in test.GetInvocationList())
{
Console.WriteLine(func(2, 1));
}
Console.ReadKey();
}
static int Add(int x, int y)
{
Console.Write("X + Y:");
return x + y;
}
static int Minus(int x, int y)
{
Console.Write("X - Y:");
return x - y;
}
}
输出结果:
X+Y:3
X-Y:1

浙公网安备 33010602011771号