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.4 委托的组合 - 图1

组合委托如图15-5所示。

15.4 委托的组合 - 图2

图 15-5 组合委托图示