确认一键查看最优答案
本功能為VIP专享,开通VIP获取答案速率将提升10倍哦!
结帖率 技术版大版主,VB版大版主,C/C++版大版主,.NET技术-C#版版主,.NET技术-非技术区版版主">版主
本质上说event是一个语法糖,它使得写程序更简单了C#有大量的语法,你不用也一样写程序甚至连循环语句都是不必要的——如果你只从是否必要的角度来看嘚话。
看清楚问题行不?我说的是event关键字要和不要有什么区别跟委托无关!!
运行没什么区别啊,这event到底有什么用?
5楼说的就是你想要的答案可惜你看不懂...
你可以往事件上绑定多个处理函数使用+=运算符,比如
bine方法的调用而你却不用操心这些)
C#语法糖有很多,比如using语呴可以幕后去调用dispose方法foreach会调用MoveNext Current等方法,自动属性会为你自动实现后备字段yield return能做的更加神奇——甚至为你创建了匿名的迭代器类和多线程的枚举方法。
你可以理解为一种通知或触发机制
想想窗体或控件的各种事件,
都是达到某种条件而触发并执行绑定的方法
bine方法的调用而你却不用操心这些)
不要笑不笑的,人的认知能力是逐步的有的時候可能只认识到一点,没认识到另一点这有情可原。我看这样很好大家互相讨论,说出自己的观点就彼此都有了进步。所以不偠讽刺挖苦打击,没有谁生下来就什么都懂就懂得彻底,彼此有个宽容心好吧?
额。我试过了,Event在对象外的操作只有“-=”“+=”兩种操作,其他的操作比如像delegate直接作为语句运行是不行的必须在定义的类内部使用,说明Event同时具有public和private两种属性在外部指向事件应该有嘚操作但是只能在内部处罚,这正好符合事件的特征但是delegate就不一样,只要定义为public类内部可以触发外部同样可以触发,它只是函数句柄洏已所以归纳起来Event是只有触发者才能调用运行的函数句柄,是特殊的delegate类型
事件是特殊的委托是多播委托,可以添加多个事件处理函数但是委托只能绑定一个处理函数。 C#语法糖有很多比如using语句可以幕后去调用dispose方法,foreach会调用MoveNext Current等方法自动属性会为你自动实现后备字段,yield return能做的更加神奇——甚至为你创建了匿名的迭代器类和多线程的枚举方法还一个劲炫耀语法糖这种词来装逼
好像是用不用event的区别把。
32楼講到了点子上赞一个!不知道楼主有没有搞明白?
26楼说得很到位的另外如果你不想在增加方法时使用+=、-+这种形式可以给这个事件委托增加一个属性
这样就OK了。有没有Event这个关键字的区别26楼的是很对的