查看: 562|回复: 0
打印 上一主题 下一主题

[其他] C#委托和事件的区别

[复制链接]
may    

8830

主题

81

听众

7万

积分

首席设计师

Rank: 8Rank: 8

纳金币
52352
精华
343

最佳新人 热心会员 灌水之王 活跃会员 突出贡献 荣誉管理 论坛元老

跳转到指定楼层
楼主
发表于 2016-8-29 21:07:09 |只看该作者 |倒序浏览

     很多人以为有了委托还要事件干嘛,其实很重要,如果没有了事件,那么你的代码触发时机可能会被别人修改,造成巨大的漏洞。下面,我会简略说明一下问题所在。

     委托,声明后,可以直接实例,例如:internal delegate void DoThingDelegate();     实例:internal DoThingDelegate DoThing;这样一来,别人都可以使用DoThing+=或者-=一个方法了。

     事件,由于上面声明了委托,实例一个事件:internal event  DoThingDelegate DoThing;同样,别人都可以使用DoThing+=或者-=一个方法了。

        由此看来,有了委托,还要事件干嘛,岂不是多此一举、画蛇添足、景上添花·······

        经过本人多次实验,发现,如果只用委托,那么别人用你的代码的时候,可以直接调用你的DoThing方法;他就可以随时触发这个委托了,万一你的委托绑定了10个代码,那么因为一个人的疏忽,会导致10个代码都在执行,会出现很严重的问题,团体开发很不安全。

        于是,如果实例的是事件,那么,我的代码触发时机,任何人都控制不了,因为他们只可以+=和-=,根本无法调用  DoThing方法。


分享到: QQ好友和群QQ好友和群 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
转播转播0 分享淘帖0 收藏收藏0 支持支持0 反对反对0
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

手机版|纳金网 ( 闽ICP备2021016425号-2/3

GMT+8, 2025-8-19 07:12 , Processed in 0.299450 second(s), 28 queries .

Powered by Discuz!-创意设计 X2.5

© 2008-2019 Narkii Inc.

回顶部