作为初学者,在学习委托事件时,学习的格式为
委托 delegate void 委托类型名(....);public delegate void mydelegate();
事件 [修饰符] event 委托类型名 事件名;public event mydelegate myevent;
在园子里学习大侠的文章《C# 多线程经典示例 吃苹果》时,发现了
“public EventHandler PutAction;//声明一个事件,当放苹果时触发该事件”的用法,
百度一下“EventHandler”,EventHandler表示将处理不包含事件数据的事件的方法,也是一个委托
EventHandler是系统自己的带参委托定义为:
public delegate void EventHandler<TEventArgs>(object sender, TEventArgs e);
感觉
public Event Eventhandler ClickEvent;
其实就等同于声明
public delegate void Eventhandler();
public Event Eventhandler ClickEvent;
但是上面的应用省掉了event关键字!,网上能收到的信息里,EventHandler其更多的时候被定义成event(与event搭配使用),即事件的方式来使用。于event 隔开,单独使用EventHandler的文章没能搜索到,由于基础知识太薄弱,还处于自学状态,没能理解eventhandler作为事件委托如何单独使用及其要点,请各位大侠,详细指点一下,园豆不多,谢谢!
通过学习了《C#中的委托和事件》(张子阳)的文章,了解了事件关键字event与eventhanlder使用的区别,以及注意事项,虽然楼下几位大侠的指点没能让我搞懂,但是也给出了一些思路,任然感谢几位大侠!
事件也是委托,就是特殊的委托,作用域不一样而已。EventHandler<TEventArgs>了解一下事件传值吧,概念性的东西不用太多纠结。我理解就是大概明白就行了。从封装的角度来说一般事件是给外部(上层)订阅的。
public delegate void EventHandler<TEventArgs>(object sender, TEventArgs e);
是不是这么写法让你感到困扰了?
换一个
public delegate void EventHandler(object sender, string e);
这是定义一个有两个参数,无返回值的委托
//
这个TEventArgs就是泛指某个类