很多人以为有了委托还要事件干嘛,其实很重要,如果没有了事件,那么你的代码触发时机可能会被别人修改,造成巨大的漏洞。下面,我会简略说明一下问题所在。
委托,声明后,可以直接实例,例如:internal delegate void DoThingDelegate(); 实例:internal DoThingDelegate DoThing;
这样一来,别人都可以使用DoThing+=或者-=一个方法了。
事件,由于上面声明了委托,实例一个事件:internal event DoThingDelegate DoThing;同样,别人都可以使用DoThing+=或者-=一个方法了。
委托,声明后,可以直接实例,例如:internal delegate void DoThingDelegate(); 实例:internal DoThingDelegate DoThing;
这样一来,别人都可以使用DoThing+=或者-=一个方法了。
事件,由于上面声明了委托,实例一个事件:internal event DoThingDelegate DoThing;同样,别人都可以使用DoThing+=或者-=一个方法了。
由此看来,有了委托,还要事件干嘛,岂不是多此一举、画蛇添足、景上添花。
经过本人多次实验,发现如果只用委托,那么别人用你的代码的时候,可以直接
调用你的DoThing方法,他就可以随时触发这个委托了,万一你的委托绑定了10个代码,那么因为一个人的疏忽,会导致10个代码都在执行,会出现很严重的问题,团体开发很不安全。
于是,如果实例化的是事件,那么,我的代码触发时机,除了我任何人都控制不了,因为他们只可以+=和-=,根本无法调用 DoThing方法。