C#- 委托






  委托就好像函数的指针,1.首先声明一个全局变量的委托 2.接着实例化一个委托对象,并使他指向一个方法 3.最后 调用该委托对象等同于调用该方法。

  使用+=是增加委托调用的方法,使用-=是减少委托调用的方法

  实际上+=相当于Delegate.Combine, -=相当于Delegate.Remove



1. using System;  
2. using System.Collections.Generic;  
3. using System.Linq;  
4. using System.Text;  
5.   
6. namespace 委托测试  
7. {  
8. delegate void DGSayiHi(string name);  
9. class Program  
10.     {  
11. static void Main(string[] args)  
12.         {  
13. new DGSayiHi(SayChineseHi);  
14. new DGSayiHi(SayEnglishHi);  
15. "春晓");  
16.   
17.             Console.ReadLine();  
18.   
19.         }  
20.   
21. static void SayChineseHi(string name)  
22.         {  
23. "你好:" + name);  
24.         }  
25.   
26. static void SayEnglishHi(string name)  
27.         {  
28. "Hello:" + name);  
29.         }  
30.     }     
31. }  
32.   
33.   
34. ===============================  
35.   
36. using System;  
37. using System.Collections.Generic;  
38. using System.Linq;  
39. using System.Text;  
40.   
41. namespace 委托测试  
42. {  
43. delegate void DGSayiHi(string name);  
44. delegate void DGDo(string name);  
45. class Program  
46.     {  
47. static void Main(string[] args)  
48.         {  
49. new DGSayiHi(SayChineseHi);  
50. new DGSayiHi(SayEnglishHi);  
51.             sayhi += sayhi2;  
52.               
53. "春晓");  
54.             Console.ReadLine();  
55.   
56.         }  
57.   
58. static void SayChineseHi(string name)  
59.         {  
60. "你好:" + name);  
61.         }  
62.   
63. static void SayEnglishHi(string name)  
64.         {  
65. "Hello:" + name);  
66.         }  
67.     }  
68. }



 

C#- 委托_System

 

  从上图我们可以看出,委托实际上是一个类,委托有一个委托变量methodPtr,methodPtr他是一个指针。他指向一个方法。

  委托里而有object[] methodList, 当需要+=多个委拖的时候,其他的方法就会加入到object数组中。