15.6 从委托中删除一个方法

和增加引用相反,我们也可以从委托中删除一个引用方法(或者叫做解除引用)——使用"-="运算符来完成这一动作,如代码清单15-4所示。

代码清单15-4 从委托中删除一个方法代码示例


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;

21 p1=sample.Process1;

22 p1+=sample.Process2;

23

24 System.Console.WriteLine(“调用委托p1:”);

25 p1(“测试数据”);

26

27 p1-=sample.Process1;

28 System.Console.WriteLine(“\n删除sample.Process1引用后调用委托p1:”);

29 p1(“测试数据”);

30}

31}

32}


上述代码的运行结果为:


调用委托p1:

处理流程1:测试数据

处理流程2:测试数据

删除sample.Process1引用后调用委托p1:

处理流程2:测试数据