15.4 委托的组合
使用"+"可将两个委托组合起来,或者使用"-"从一个组合委托删除其中一个成员。如代码清单15-2所示。
代码清单15-2 委托的组合
1 namespace ProgrammingCSharp4
2{
3 public delegate void DoProcess(string msg);
4
5 class DelegateSample
6{
7 void Process1(string msg)
8{
9 System.Console.WriteLine(“处理流程1:{0}”,msg);
10
}
11
12 void Process2(string msg)
13
{
14 System.Console.WriteLine(“处理流程2:{0}”,msg);
15
}
16
17 public static void Main()
18
{
19 DelegateSample sample=new DelegateSample();
20 DoProcess p1,p2,p3,p4;
21 p1=sample.Process1;
22 p2=sample.Process2;
23 p3=p1+p2;
24 p4=p3-p2;
25
26 System.Console.WriteLine(“调用委托p1:”);
27 p1(“测试数据\n”);
28 System.Console.WriteLine(“调用委托p2:”);
29 p2(“测试数据\n”);
30 System.Console.WriteLine(“调用委托p3:”);
31 p3(“测试数据\n”);
32 System.Console.WriteLine(“调用委托p4:”);
33 p4(“测试数据”);
34}
35}
36}
上述代码的运行结果如下:
调用委托p1:
处理流程1:测试数据
调用委托p2:
处理流程2:测试数据
调用委托p3:
处理流程1:测试数据
处理流程2:测试数据
调用委托p4:
处理流程1:测试数据
对于上述代码的说明,如表15-2所示。
组合委托如图15-5所示。
图 15-5 组合委托图示