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. }
从上图我们可以看出,委托实际上是一个类,委托有一个委托变量methodPtr,methodPtr他是一个指针。他指向一个方法。
委托里而有object[] methodList, 当需要+=多个委拖的时候,其他的方法就会加入到object数组中。