62,047
社区成员
发帖
与我相关
我的任务
分享
FCL中的定义
public delegate void EventHandler<TEventArgs>(object sender,TEventArgs e) where TEventArgs:EventArgs
...
所以方法原型必须是viod Method(object sender,TEventArgs e)
事件的定义:
public event EventHandler<TEventArgs > OnXXXX;
从而可以看出事件是建立在委托的基础上。。
一般是发布-订阅模式
通过触发OnXXXX来回调订阅者的Method
//定义语法
//访问修饰符 delegate 返回类型 委托名 (参数列表) //返回类型 和 参数列表称为[签名]
//[public/protected/private] delegate returnType delegateName(paramtype param1,…)
//
//委托可以分配多个方法,但只能分配[签名]相同的方法,分配多个方法的委托可以叫多路广播
/*
//MSDN中的解释
//委托是可保存对方法的引用的类。与其他的类不同,委托类具有一个签名,并且它只能对与其签名匹配的方法进行引用。这样,委托就等效于一个类型安全函数指针或一个回调
*/
而方法,则是一种特殊的委托,比如说我点击 Button 的时候,程序本身不知道该如何处理这个 Click,于是就给它动态注册了一个方法,并把这个方法分配给了 这个 Click 事件,(你可以右键进去看 Click 事件,是一个 关键字为 event 的委托,而那个注册的方法则是分配给了这个事件)。
额,,好吧,希望没晕。。这个刚开始理解起来貌似是有点见鬼!~