我不聪明,学习C#中的“委托”和“事件”,我大概花了整整一天的时间,才算把这两者了解清楚了。
现在,我在这里把我的学习的思路记录下来,方便初学C#的同学,也方便以后我自己万一又犯迷糊了,好利用这篇文档重拾记忆……当然,文章里肯定有不少的错误,也希望各位大虾能够帮俺指正。谢谢啦。
这一次,我准备采用一个比较生动的方式来撰写我的BLOG,我的同学小苏给了我一个可以对屏幕进行录像的工具。这次我就利用它,来重复我的全部的操作过程……
录像的下载地址我会随后贴出来,我先在这里补充一些东西。
补充材料(来自录像):
实现一个Delegate(代理、委托)的步骤:
![](https://i-blog.csdnimg.cn/blog_migrate/fa9f49d3d0cce9d50d06456e75325707.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/fa9f49d3d0cce9d50d06456e75325707.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/fa9f49d3d0cce9d50d06456e75325707.gif)
实例代码:
1
using
System;
2![](https://i-blog.csdnimg.cn/blog_migrate/fa9f49d3d0cce9d50d06456e75325707.gif)
3
namespace
MyTest
4![](https://i-blog.csdnimg.cn/blog_migrate/4e8f76487c5f98d1488e9d284adfdda0.gif)
{
5
public delegate void TestDelegate(int x, int y);
6
class Class1
7![](https://i-blog.csdnimg.cn/blog_migrate/93ae1726bddda31024bd860c0707e333.gif)
{
8
[STAThread]
9
static void Main(string[] args)
10![](https://i-blog.csdnimg.cn/blog_migrate/93ae1726bddda31024bd860c0707e333.gif)
{
11
Class1 test = new Class1();
12
TestDelegate td = new TestDelegate(test.add);
13
td += new TestDelegate(test.sub);
14
td(10,5);
15
Console.ReadLine();
16
}
17
public void add(int a, int b)
18![](https://i-blog.csdnimg.cn/blog_migrate/93ae1726bddda31024bd860c0707e333.gif)
{
19
Console.WriteLine(a+b);//这里结果应该是15
20
}
21
public void sub(int a, int b)
22![](https://i-blog.csdnimg.cn/blog_migrate/93ae1726bddda31024bd860c0707e333.gif)
{
23
Console.WriteLine(a-b);//这里是5,让我们运行看看。
24
}
25
}
26
}
![](https://i-blog.csdnimg.cn/blog_migrate/fa9f49d3d0cce9d50d06456e75325707.gif)
2
![](https://i-blog.csdnimg.cn/blog_migrate/fa9f49d3d0cce9d50d06456e75325707.gif)
3
![](https://i-blog.csdnimg.cn/blog_migrate/fa9f49d3d0cce9d50d06456e75325707.gif)
4
![](https://i-blog.csdnimg.cn/blog_migrate/4e8f76487c5f98d1488e9d284adfdda0.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/ebb40a41a47d126af36708f832152b42.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/8af4554d6274d7fa96f1e4de3b677f3b.gif)
5
![](https://i-blog.csdnimg.cn/blog_migrate/8f4e52209a1df4f7be686c71cb33edb2.gif)
6
![](https://i-blog.csdnimg.cn/blog_migrate/8f4e52209a1df4f7be686c71cb33edb2.gif)
7
![](https://i-blog.csdnimg.cn/blog_migrate/93ae1726bddda31024bd860c0707e333.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/104d158845aa8c2a01202b5a08f5c622.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/8af4554d6274d7fa96f1e4de3b677f3b.gif)
8
![](https://i-blog.csdnimg.cn/blog_migrate/8f4e52209a1df4f7be686c71cb33edb2.gif)
9
![](https://i-blog.csdnimg.cn/blog_migrate/8f4e52209a1df4f7be686c71cb33edb2.gif)
10
![](https://i-blog.csdnimg.cn/blog_migrate/93ae1726bddda31024bd860c0707e333.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/104d158845aa8c2a01202b5a08f5c622.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/8af4554d6274d7fa96f1e4de3b677f3b.gif)
11
![](https://i-blog.csdnimg.cn/blog_migrate/8f4e52209a1df4f7be686c71cb33edb2.gif)
12
![](https://i-blog.csdnimg.cn/blog_migrate/8f4e52209a1df4f7be686c71cb33edb2.gif)
13
![](https://i-blog.csdnimg.cn/blog_migrate/8f4e52209a1df4f7be686c71cb33edb2.gif)
14
![](https://i-blog.csdnimg.cn/blog_migrate/8f4e52209a1df4f7be686c71cb33edb2.gif)
15
![](https://i-blog.csdnimg.cn/blog_migrate/8f4e52209a1df4f7be686c71cb33edb2.gif)
16
![](https://i-blog.csdnimg.cn/blog_migrate/8a9f5778f358074542b9229f5bd5ece6.gif)
17
![](https://i-blog.csdnimg.cn/blog_migrate/8f4e52209a1df4f7be686c71cb33edb2.gif)
18
![](https://i-blog.csdnimg.cn/blog_migrate/93ae1726bddda31024bd860c0707e333.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/104d158845aa8c2a01202b5a08f5c622.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/8af4554d6274d7fa96f1e4de3b677f3b.gif)
19
![](https://i-blog.csdnimg.cn/blog_migrate/8f4e52209a1df4f7be686c71cb33edb2.gif)
20
![](https://i-blog.csdnimg.cn/blog_migrate/8a9f5778f358074542b9229f5bd5ece6.gif)
21
![](https://i-blog.csdnimg.cn/blog_migrate/8f4e52209a1df4f7be686c71cb33edb2.gif)
22
![](https://i-blog.csdnimg.cn/blog_migrate/93ae1726bddda31024bd860c0707e333.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/104d158845aa8c2a01202b5a08f5c622.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/8af4554d6274d7fa96f1e4de3b677f3b.gif)
23
![](https://i-blog.csdnimg.cn/blog_migrate/8f4e52209a1df4f7be686c71cb33edb2.gif)
24
![](https://i-blog.csdnimg.cn/blog_migrate/8a9f5778f358074542b9229f5bd5ece6.gif)
25
![](https://i-blog.csdnimg.cn/blog_migrate/8a9f5778f358074542b9229f5bd5ece6.gif)
26
![](https://i-blog.csdnimg.cn/blog_migrate/7b83835ace418e6ec70a942875187bf5.gif)
实现一个Event(事件)的步骤:
1
、定义delegate对象类型,它有两个参数,第一个参数是事件发送者对象,第二个参数是事件参数类对象。
2 、定义事件参数类,此类应当从System.EventArgs类派生。如果事件不带参数,这一步可以省略。
3 、定义事件处理方法,它应当与delegate对象具有相同的参数和返回值类型。
4 、用event关键字定义事件对象,它同时也是一个delegate对象。
5 、用+ = 操作符添加事件到事件队列中(- = 操作符能够将事件从队列中删除)。
6 、在需要触发事件的地方用调用delegate的方式写事件触发方法。一般来说,此方法应为protected访问限制,既不能以public方式调用,但可以被子类继承。名字是OnEventName。
7 、在适当的地方调用事件触发方法触发事件。
2 、定义事件参数类,此类应当从System.EventArgs类派生。如果事件不带参数,这一步可以省略。
3 、定义事件处理方法,它应当与delegate对象具有相同的参数和返回值类型。
4 、用event关键字定义事件对象,它同时也是一个delegate对象。
5 、用+ = 操作符添加事件到事件队列中(- = 操作符能够将事件从队列中删除)。
6 、在需要触发事件的地方用调用delegate的方式写事件触发方法。一般来说,此方法应为protected访问限制,既不能以public方式调用,但可以被子类继承。名字是OnEventName。
7 、在适当的地方调用事件触发方法触发事件。
实例代码:
1
using
System;
2![](https://i-blog.csdnimg.cn/blog_migrate/fa9f49d3d0cce9d50d06456e75325707.gif)
3
namespace
ConsoleApplication3
4![](https://i-blog.csdnimg.cn/blog_migrate/4e8f76487c5f98d1488e9d284adfdda0.gif)
{
5![](https://i-blog.csdnimg.cn/blog_migrate/93ae1726bddda31024bd860c0707e333.gif)
/**//// <summary>
6
/// Class1 的摘要说明。
7
/// </summary>
8
9
10
public delegate void CSProgram(object sender, System.EventArgs e);
11
12
public class Class1
13![](https://i-blog.csdnimg.cn/blog_migrate/93ae1726bddda31024bd860c0707e333.gif)
{
14![](https://i-blog.csdnimg.cn/blog_migrate/93ae1726bddda31024bd860c0707e333.gif)
/**//// <summary>
15
/// 应用程序的主入口点。
16
/// </summary>
17
[STAThread]
18
static void Main(string[] args)
19![](https://i-blog.csdnimg.cn/blog_migrate/93ae1726bddda31024bd860c0707e333.gif)
{
20
Console.WriteLine("系统:CS游戏开始了!");
21
Console.WriteLine();
22
//生成游戏玩家小适
23
HeShi hs = new HeShi();
24
//生成POD
25
Pod pod = new Pod();
26
27
//制定监视
28
pod.PodEvent += new CSProgram(hs.KillPod);//STEP 5
29![](https://i-blog.csdnimg.cn/blog_migrate/8f4e52209a1df4f7be686c71cb33edb2.gif)
30
//POD开始玩游戏
31
pod.MeetHeShi();
32![](https://i-blog.csdnimg.cn/blog_migrate/8f4e52209a1df4f7be686c71cb33edb2.gif)
33
Console.WriteLine("系统:CS游戏结束。");
34
Console.ReadLine();
35![](https://i-blog.csdnimg.cn/blog_migrate/8f4e52209a1df4f7be686c71cb33edb2.gif)
36
37
}
38
}
39
40![](https://i-blog.csdnimg.cn/blog_migrate/93ae1726bddda31024bd860c0707e333.gif)
/**//// <summary>
41
/// 游戏玩家小适
42
/// </summary>
43
public class HeShi
44![](https://i-blog.csdnimg.cn/blog_migrate/93ae1726bddda31024bd860c0707e333.gif)
{
45
public HeShi()//构造函数
46![](https://i-blog.csdnimg.cn/blog_migrate/93ae1726bddda31024bd860c0707e333.gif)
{
47
Console.WriteLine("系统:生成CS玩家小适。");
48
Console.WriteLine("系统:玩家小适生成完成。");
49
Console.WriteLine();
50
}
51![](https://i-blog.csdnimg.cn/blog_migrate/8f4e52209a1df4f7be686c71cb33edb2.gif)
52
public void KillPod(object sender, EventArgs e)
53![](https://i-blog.csdnimg.cn/blog_migrate/93ae1726bddda31024bd860c0707e333.gif)
{
54
Console.WriteLine("小适:重狙!轰!!");
55
Pod podtemp = (Pod)sender;
56
podtemp.Life = podtemp.Life - 524;
57
System.Threading.Thread.Sleep(500);
58
Console.WriteLine();
59
Console.WriteLine("系统:POD中弹,现在生命值为:"+podtemp.Life);
60
Console.WriteLine();
61
}
62
}
63![](https://i-blog.csdnimg.cn/blog_migrate/8f4e52209a1df4f7be686c71cb33edb2.gif)
64![](https://i-blog.csdnimg.cn/blog_migrate/93ae1726bddda31024bd860c0707e333.gif)
/**//// <summary>
65
/// POD机器人的类
66
/// </summary>
67
public class Pod
68![](https://i-blog.csdnimg.cn/blog_migrate/93ae1726bddda31024bd860c0707e333.gif)
{
69
public event CSProgram PodEvent;
70![](https://i-blog.csdnimg.cn/blog_migrate/8f4e52209a1df4f7be686c71cb33edb2.gif)
71
private string name = "Tom";
72
private int life = 100;
73
public int Life//属性
74![](https://i-blog.csdnimg.cn/blog_migrate/93ae1726bddda31024bd860c0707e333.gif)
{
75
get
76![](https://i-blog.csdnimg.cn/blog_migrate/93ae1726bddda31024bd860c0707e333.gif)
{
77
return life;
78
}
79
set
80![](https://i-blog.csdnimg.cn/blog_migrate/93ae1726bddda31024bd860c0707e333.gif)
{
81
life = value;
82
}
83
}
84![](https://i-blog.csdnimg.cn/blog_migrate/8f4e52209a1df4f7be686c71cb33edb2.gif)
85![](https://i-blog.csdnimg.cn/blog_migrate/93ae1726bddda31024bd860c0707e333.gif)
/**//// <summary>
86
/// 构造函数
87
/// </summary>
88
public Pod()
89![](https://i-blog.csdnimg.cn/blog_migrate/93ae1726bddda31024bd860c0707e333.gif)
{
90
Console.WriteLine("系统:生成新的POD……");
91
Console.WriteLine("系统:POD生成完成!");
92
Console.WriteLine();
93
Console.WriteLine("POD的属性:姓名= "+name+",生命值= "+life+"。");
94
Console.WriteLine();
95
}
96![](https://i-blog.csdnimg.cn/blog_migrate/8f4e52209a1df4f7be686c71cb33edb2.gif)
97
public void MeetHeShi()
98![](https://i-blog.csdnimg.cn/blog_migrate/93ae1726bddda31024bd860c0707e333.gif)
{
99
System.Threading.Thread.Sleep(2500);
100
Console.WriteLine("系统:POD遇见小适……");
101
Console.WriteLine();
102
Console.WriteLine("POD "+name+":我要杀人!" );
103
System.EventArgs e = new EventArgs();
104
this.PodEvent(this, e);
105
106
}
107
}
108
}
![](https://i-blog.csdnimg.cn/blog_migrate/fa9f49d3d0cce9d50d06456e75325707.gif)
2
![](https://i-blog.csdnimg.cn/blog_migrate/fa9f49d3d0cce9d50d06456e75325707.gif)
3
![](https://i-blog.csdnimg.cn/blog_migrate/fa9f49d3d0cce9d50d06456e75325707.gif)
4
![](https://i-blog.csdnimg.cn/blog_migrate/4e8f76487c5f98d1488e9d284adfdda0.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/ebb40a41a47d126af36708f832152b42.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/8af4554d6274d7fa96f1e4de3b677f3b.gif)
5
![](https://i-blog.csdnimg.cn/blog_migrate/93ae1726bddda31024bd860c0707e333.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/104d158845aa8c2a01202b5a08f5c622.gif)
6
![](https://i-blog.csdnimg.cn/blog_migrate/8f4e52209a1df4f7be686c71cb33edb2.gif)
7
![](https://i-blog.csdnimg.cn/blog_migrate/8a9f5778f358074542b9229f5bd5ece6.gif)
8
![](https://i-blog.csdnimg.cn/blog_migrate/8f4e52209a1df4f7be686c71cb33edb2.gif)
9
![](https://i-blog.csdnimg.cn/blog_migrate/8f4e52209a1df4f7be686c71cb33edb2.gif)
10
![](https://i-blog.csdnimg.cn/blog_migrate/8f4e52209a1df4f7be686c71cb33edb2.gif)
11
![](https://i-blog.csdnimg.cn/blog_migrate/8f4e52209a1df4f7be686c71cb33edb2.gif)
12
![](https://i-blog.csdnimg.cn/blog_migrate/8f4e52209a1df4f7be686c71cb33edb2.gif)
13
![](https://i-blog.csdnimg.cn/blog_migrate/93ae1726bddda31024bd860c0707e333.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/104d158845aa8c2a01202b5a08f5c622.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/8af4554d6274d7fa96f1e4de3b677f3b.gif)
14
![](https://i-blog.csdnimg.cn/blog_migrate/93ae1726bddda31024bd860c0707e333.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/104d158845aa8c2a01202b5a08f5c622.gif)
15
![](https://i-blog.csdnimg.cn/blog_migrate/8f4e52209a1df4f7be686c71cb33edb2.gif)
16
![](https://i-blog.csdnimg.cn/blog_migrate/8a9f5778f358074542b9229f5bd5ece6.gif)
17
![](https://i-blog.csdnimg.cn/blog_migrate/8f4e52209a1df4f7be686c71cb33edb2.gif)
18
![](https://i-blog.csdnimg.cn/blog_migrate/8f4e52209a1df4f7be686c71cb33edb2.gif)
19
![](https://i-blog.csdnimg.cn/blog_migrate/93ae1726bddda31024bd860c0707e333.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/104d158845aa8c2a01202b5a08f5c622.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/8af4554d6274d7fa96f1e4de3b677f3b.gif)
20
![](https://i-blog.csdnimg.cn/blog_migrate/8f4e52209a1df4f7be686c71cb33edb2.gif)
21
![](https://i-blog.csdnimg.cn/blog_migrate/8f4e52209a1df4f7be686c71cb33edb2.gif)
22
![](https://i-blog.csdnimg.cn/blog_migrate/8f4e52209a1df4f7be686c71cb33edb2.gif)
23
![](https://i-blog.csdnimg.cn/blog_migrate/8f4e52209a1df4f7be686c71cb33edb2.gif)
24
![](https://i-blog.csdnimg.cn/blog_migrate/8f4e52209a1df4f7be686c71cb33edb2.gif)
25
![](https://i-blog.csdnimg.cn/blog_migrate/8f4e52209a1df4f7be686c71cb33edb2.gif)
26
![](https://i-blog.csdnimg.cn/blog_migrate/8f4e52209a1df4f7be686c71cb33edb2.gif)
27
![](https://i-blog.csdnimg.cn/blog_migrate/8f4e52209a1df4f7be686c71cb33edb2.gif)
28
![](https://i-blog.csdnimg.cn/blog_migrate/8f4e52209a1df4f7be686c71cb33edb2.gif)
29
![](https://i-blog.csdnimg.cn/blog_migrate/8f4e52209a1df4f7be686c71cb33edb2.gif)
30
![](https://i-blog.csdnimg.cn/blog_migrate/8f4e52209a1df4f7be686c71cb33edb2.gif)
31
![](https://i-blog.csdnimg.cn/blog_migrate/8f4e52209a1df4f7be686c71cb33edb2.gif)
32
![](https://i-blog.csdnimg.cn/blog_migrate/8f4e52209a1df4f7be686c71cb33edb2.gif)
33
![](https://i-blog.csdnimg.cn/blog_migrate/8f4e52209a1df4f7be686c71cb33edb2.gif)
34
![](https://i-blog.csdnimg.cn/blog_migrate/8f4e52209a1df4f7be686c71cb33edb2.gif)
35
![](https://i-blog.csdnimg.cn/blog_migrate/8f4e52209a1df4f7be686c71cb33edb2.gif)
36
![](https://i-blog.csdnimg.cn/blog_migrate/8f4e52209a1df4f7be686c71cb33edb2.gif)
37
![](https://i-blog.csdnimg.cn/blog_migrate/8a9f5778f358074542b9229f5bd5ece6.gif)
38
![](https://i-blog.csdnimg.cn/blog_migrate/8a9f5778f358074542b9229f5bd5ece6.gif)
39
![](https://i-blog.csdnimg.cn/blog_migrate/8f4e52209a1df4f7be686c71cb33edb2.gif)
40
![](https://i-blog.csdnimg.cn/blog_migrate/93ae1726bddda31024bd860c0707e333.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/104d158845aa8c2a01202b5a08f5c622.gif)
41
![](https://i-blog.csdnimg.cn/blog_migrate/8f4e52209a1df4f7be686c71cb33edb2.gif)
42
![](https://i-blog.csdnimg.cn/blog_migrate/8a9f5778f358074542b9229f5bd5ece6.gif)
43
![](https://i-blog.csdnimg.cn/blog_migrate/8f4e52209a1df4f7be686c71cb33edb2.gif)
44
![](https://i-blog.csdnimg.cn/blog_migrate/93ae1726bddda31024bd860c0707e333.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/104d158845aa8c2a01202b5a08f5c622.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/8af4554d6274d7fa96f1e4de3b677f3b.gif)
45
![](https://i-blog.csdnimg.cn/blog_migrate/8f4e52209a1df4f7be686c71cb33edb2.gif)
46
![](https://i-blog.csdnimg.cn/blog_migrate/93ae1726bddda31024bd860c0707e333.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/104d158845aa8c2a01202b5a08f5c622.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/8af4554d6274d7fa96f1e4de3b677f3b.gif)
47
![](https://i-blog.csdnimg.cn/blog_migrate/8f4e52209a1df4f7be686c71cb33edb2.gif)
48
![](https://i-blog.csdnimg.cn/blog_migrate/8f4e52209a1df4f7be686c71cb33edb2.gif)
49
![](https://i-blog.csdnimg.cn/blog_migrate/8f4e52209a1df4f7be686c71cb33edb2.gif)
50
![](https://i-blog.csdnimg.cn/blog_migrate/8a9f5778f358074542b9229f5bd5ece6.gif)
51
![](https://i-blog.csdnimg.cn/blog_migrate/8f4e52209a1df4f7be686c71cb33edb2.gif)
52
![](https://i-blog.csdnimg.cn/blog_migrate/8f4e52209a1df4f7be686c71cb33edb2.gif)
53
![](https://i-blog.csdnimg.cn/blog_migrate/93ae1726bddda31024bd860c0707e333.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/104d158845aa8c2a01202b5a08f5c622.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/8af4554d6274d7fa96f1e4de3b677f3b.gif)
54
![](https://i-blog.csdnimg.cn/blog_migrate/8f4e52209a1df4f7be686c71cb33edb2.gif)
55
![](https://i-blog.csdnimg.cn/blog_migrate/8f4e52209a1df4f7be686c71cb33edb2.gif)
56
![](https://i-blog.csdnimg.cn/blog_migrate/8f4e52209a1df4f7be686c71cb33edb2.gif)
57
![](https://i-blog.csdnimg.cn/blog_migrate/8f4e52209a1df4f7be686c71cb33edb2.gif)
58
![](https://i-blog.csdnimg.cn/blog_migrate/8f4e52209a1df4f7be686c71cb33edb2.gif)
59
![](https://i-blog.csdnimg.cn/blog_migrate/8f4e52209a1df4f7be686c71cb33edb2.gif)
60
![](https://i-blog.csdnimg.cn/blog_migrate/8f4e52209a1df4f7be686c71cb33edb2.gif)
61
![](https://i-blog.csdnimg.cn/blog_migrate/8a9f5778f358074542b9229f5bd5ece6.gif)
62
![](https://i-blog.csdnimg.cn/blog_migrate/8a9f5778f358074542b9229f5bd5ece6.gif)
63
![](https://i-blog.csdnimg.cn/blog_migrate/8f4e52209a1df4f7be686c71cb33edb2.gif)
64
![](https://i-blog.csdnimg.cn/blog_migrate/93ae1726bddda31024bd860c0707e333.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/104d158845aa8c2a01202b5a08f5c622.gif)
65
![](https://i-blog.csdnimg.cn/blog_migrate/8f4e52209a1df4f7be686c71cb33edb2.gif)
66
![](https://i-blog.csdnimg.cn/blog_migrate/8a9f5778f358074542b9229f5bd5ece6.gif)
67
![](https://i-blog.csdnimg.cn/blog_migrate/8f4e52209a1df4f7be686c71cb33edb2.gif)
68
![](https://i-blog.csdnimg.cn/blog_migrate/93ae1726bddda31024bd860c0707e333.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/104d158845aa8c2a01202b5a08f5c622.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/8af4554d6274d7fa96f1e4de3b677f3b.gif)
69
![](https://i-blog.csdnimg.cn/blog_migrate/8f4e52209a1df4f7be686c71cb33edb2.gif)
70
![](https://i-blog.csdnimg.cn/blog_migrate/8f4e52209a1df4f7be686c71cb33edb2.gif)
71
![](https://i-blog.csdnimg.cn/blog_migrate/8f4e52209a1df4f7be686c71cb33edb2.gif)
72
![](https://i-blog.csdnimg.cn/blog_migrate/8f4e52209a1df4f7be686c71cb33edb2.gif)
73
![](https://i-blog.csdnimg.cn/blog_migrate/8f4e52209a1df4f7be686c71cb33edb2.gif)
74
![](https://i-blog.csdnimg.cn/blog_migrate/93ae1726bddda31024bd860c0707e333.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/104d158845aa8c2a01202b5a08f5c622.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/8af4554d6274d7fa96f1e4de3b677f3b.gif)
75
![](https://i-blog.csdnimg.cn/blog_migrate/8f4e52209a1df4f7be686c71cb33edb2.gif)
76
![](https://i-blog.csdnimg.cn/blog_migrate/93ae1726bddda31024bd860c0707e333.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/104d158845aa8c2a01202b5a08f5c622.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/8af4554d6274d7fa96f1e4de3b677f3b.gif)
77
![](https://i-blog.csdnimg.cn/blog_migrate/8f4e52209a1df4f7be686c71cb33edb2.gif)
78
![](https://i-blog.csdnimg.cn/blog_migrate/8a9f5778f358074542b9229f5bd5ece6.gif)
79
![](https://i-blog.csdnimg.cn/blog_migrate/8f4e52209a1df4f7be686c71cb33edb2.gif)
80
![](https://i-blog.csdnimg.cn/blog_migrate/93ae1726bddda31024bd860c0707e333.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/104d158845aa8c2a01202b5a08f5c622.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/8af4554d6274d7fa96f1e4de3b677f3b.gif)
81
![](https://i-blog.csdnimg.cn/blog_migrate/8f4e52209a1df4f7be686c71cb33edb2.gif)
82
![](https://i-blog.csdnimg.cn/blog_migrate/8a9f5778f358074542b9229f5bd5ece6.gif)
83
![](https://i-blog.csdnimg.cn/blog_migrate/8a9f5778f358074542b9229f5bd5ece6.gif)
84
![](https://i-blog.csdnimg.cn/blog_migrate/8f4e52209a1df4f7be686c71cb33edb2.gif)
85
![](https://i-blog.csdnimg.cn/blog_migrate/93ae1726bddda31024bd860c0707e333.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/104d158845aa8c2a01202b5a08f5c622.gif)
86
![](https://i-blog.csdnimg.cn/blog_migrate/8f4e52209a1df4f7be686c71cb33edb2.gif)
87
![](https://i-blog.csdnimg.cn/blog_migrate/8a9f5778f358074542b9229f5bd5ece6.gif)
88
![](https://i-blog.csdnimg.cn/blog_migrate/8f4e52209a1df4f7be686c71cb33edb2.gif)
89
![](https://i-blog.csdnimg.cn/blog_migrate/93ae1726bddda31024bd860c0707e333.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/104d158845aa8c2a01202b5a08f5c622.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/8af4554d6274d7fa96f1e4de3b677f3b.gif)
90
![](https://i-blog.csdnimg.cn/blog_migrate/8f4e52209a1df4f7be686c71cb33edb2.gif)
91
![](https://i-blog.csdnimg.cn/blog_migrate/8f4e52209a1df4f7be686c71cb33edb2.gif)
92
![](https://i-blog.csdnimg.cn/blog_migrate/8f4e52209a1df4f7be686c71cb33edb2.gif)
93
![](https://i-blog.csdnimg.cn/blog_migrate/8f4e52209a1df4f7be686c71cb33edb2.gif)
94
![](https://i-blog.csdnimg.cn/blog_migrate/8f4e52209a1df4f7be686c71cb33edb2.gif)
95
![](https://i-blog.csdnimg.cn/blog_migrate/8a9f5778f358074542b9229f5bd5ece6.gif)
96
![](https://i-blog.csdnimg.cn/blog_migrate/8f4e52209a1df4f7be686c71cb33edb2.gif)
97
![](https://i-blog.csdnimg.cn/blog_migrate/8f4e52209a1df4f7be686c71cb33edb2.gif)
98
![](https://i-blog.csdnimg.cn/blog_migrate/93ae1726bddda31024bd860c0707e333.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/104d158845aa8c2a01202b5a08f5c622.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/8af4554d6274d7fa96f1e4de3b677f3b.gif)
99
![](https://i-blog.csdnimg.cn/blog_migrate/8f4e52209a1df4f7be686c71cb33edb2.gif)
100
![](https://i-blog.csdnimg.cn/blog_migrate/8f4e52209a1df4f7be686c71cb33edb2.gif)
101
![](https://i-blog.csdnimg.cn/blog_migrate/8f4e52209a1df4f7be686c71cb33edb2.gif)
102
![](https://i-blog.csdnimg.cn/blog_migrate/8f4e52209a1df4f7be686c71cb33edb2.gif)
103
![](https://i-blog.csdnimg.cn/blog_migrate/8f4e52209a1df4f7be686c71cb33edb2.gif)
104
![](https://i-blog.csdnimg.cn/blog_migrate/8f4e52209a1df4f7be686c71cb33edb2.gif)
105
![](https://i-blog.csdnimg.cn/blog_migrate/8f4e52209a1df4f7be686c71cb33edb2.gif)
106
![](https://i-blog.csdnimg.cn/blog_migrate/8a9f5778f358074542b9229f5bd5ece6.gif)
107
![](https://i-blog.csdnimg.cn/blog_migrate/8a9f5778f358074542b9229f5bd5ece6.gif)
108
![](https://i-blog.csdnimg.cn/blog_migrate/7b83835ace418e6ec70a942875187bf5.gif)
OK,下面是重要的部分了:
1、委托Delegate的讲解VCR(37.5MB)已失效
2、事件Event的讲解VCR(42.2MB)已失效
3、所有VCR中实例的源代码(263KB)已失效
![](https://i-blog.csdnimg.cn/blog_migrate/8d3fd36116aea7412f5df39a046aeb46.jpeg)
Feedback
2005-10-05 06:38 |
#
re: .NET入门:(5)委托和事件
2005-10-13 17:01 |
忧郁的龙卷风
呵呵,看了你的文章
基本上搞清楚了,委托是怎么实现
但是做什么用的了,我就不知道了
能解释一下吗?
谢谢!rojazz1999@gmail.com 回复
#
re: 委托和事件
2005-11-14 05:28 |
敏锐
您指出:
--6、在需要触发事件的地方用调用delegate的方式写事件触发方法。一般来说,此方法应为protected访问限制,既不能以public方式调用,但可以被子类继承。名字是OnEventName。
————————————————————————
因为在你给出的demo中找不到 方法OnPodEvent,所以我想有人一定感到疑惑的是吧?
还不算很perfect,建议写一个方法public virtual OnPodEvent(sender obj,EventArgs e);
然后在
public void MeetHeShi()
中直接调用。 这样结构也清楚,不需要在public void MeetHeShi()
中处理事件的参数。你可以把这些都放在public virtual OnPodEvent(..)中解决。
否则你的DEMO中的步骤就与你自己所说的这7个标题不符。初学者就更不明白了。
还有请注意一下命名的一些大家认可的做法,比如可以这样写
public event CSProgram OnPodEvent,那么事件的触发方法就是OnPodEvent(..),那么可以这样理解它pod.OnPodEvent += new CSProgram(hs.KillPod)
它的意思是当OnPodEvent(..)发生以后(接收参数),将回调EventHandler,即事件处理程序hs.KillPod().
如有不当,请海涵。 回复