前言:C#的事件也是一项非常关键的技术,必须要深刻的理解,本质上是基于委托的;

事件模型的五个组成部分:

1.事件的拥有者—— event source,对象;

2.事件的成员——event,成员;

3.事件的响应者——event subscriber,对象;

4.事件处理器——event handler,方法成员——本质上是一个回调方法;

5.事件订阅——把事件处理器和事件关联在一起,本质上是一种以委托类型为基础的“约定”;

下面来简单举个例子感受一下事件:

使用VS自带的Timer的Elapsed事件来关联2个自定义的对象;

 1 using System;
 2 using System.Timers;
 3 
 4 namespace SimpleEventTest
 5 {
 6     class Program
 7     {
 8         static void Main(string[] args)
 9         {
10             Timer timer = new Timer();//实例化一个timer
11             Boy boy = new Boy();//实例化一个boy
12             Girl girl = new Girl();//实例化一个girl
13             timer.Elapsed += boy.Act;//关联事件
14             timer.Elapsed += girl.Act;
15             timer.Interval = 1000;
16             timer.Start();//运行timer,一旦满足条件自动触发被关联的方法;        
17             Console.ReadLine();
18         }
19     }
20     class Boy
21     {
22         private int count = 0;
23         internal void Act(object sender, ElapsedEventArgs e)
24         {
25             count++;
26             Console.WriteLine("Boy:Jump>>>"+count);
27         }
28     }
29     class Girl
30     {
31         private int count = 0;
32         internal void Act(object sender, ElapsedEventArgs e)
33         {
34             count++;
35             Console.WriteLine("Girl:Jump>>>" + count);
36         }
37     }
38 }

运行的效果:

 

值得注意的一些技巧:

1.用来相应事件的方法命名最好取名有意义:比如上面的Action();

2.当我们新建一个空的Boy类时,直接先写实例boy的boy.Action,会提示红色波浪线;

此时,

 

 

 

 

 

 自动生成Act方法,且符合事件的签名;

 

 ~~~~~~~~~~~~~~~~~~~~~~~~

以上,初步感受。

未完待续》》》