最近很忙,恶补一切.net的基础知识。顺便熟悉一下委托和事件。事件和委托是一个常谈的话题,百度或者谷歌上面一搜一大把。所以这篇博文没什么研究的价值,不过就是一些基础。
我们知道事件和委托有着很大的联系,很多资料都说事件是一种特殊的委托(MSDN:事件是特殊类型的多路广播委托),到底是不是呢?下面来看看就知道。
我们知道事件要顺利完成必须有这2个角色:
(1)发行者
(2)订阅者
他们分别做了什么事呢?
(1)发行者:
a.定义事件
b.决定何时引发事件
(2)订阅者:
a.订阅事件
b.决定事件引发时做什么
形象化为代码如下:
//发行者:Class A
public delegate void MyEventHandler(object sender, EventArgs e);//定义事件代理
public event MyEventHandler MyEvent;//定义事件
public void OnMyEvent(EventArgs e)//定义引发事件的方法
{
if(MyEvent != null)
{
MyEvent(this,e);
}
}
//订阅者:Class B
A a = new A();
a.MyEvent +=new MyEventHandler(a_MyEvent);//订阅事件
public void a_MyEvent(object sender,EventArgs e)//决定触发事件时做什么
{
//do something
}
由上面的代码可以知道,事件MyEvent只不过是由event修饰的代理MyEventHandler的一个实例罢了。所谓的订阅事件,就是实例化(new)代理实例,而触发事件则是调用代理实例。看来事件也并不是很复杂嘛
。那么我们常见的Click等等事件在什么地方触发的呢?这点希望大牛们提示。