delegate与event不得不说的关系

delegate与event不得不说的关系

ID:8808992

大小:66.50 KB

页数:3页

时间:2018-04-08

delegate与event不得不说的关系_第1页
delegate与event不得不说的关系_第2页
delegate与event不得不说的关系_第3页
资源描述:

《delegate与event不得不说的关系》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、delegate与event不得不说的关系~先来看一段代码:///

///事件类///publicclassEventClass{//////Go委托//////publicdelegatevoidGo(stringnam);//////事件委托///publiceventGoGoEvent;//////方法1//////

2、>publicvoidGoFun(stringname){Console.WriteLine(name);}///

///方法2//////publicvoidGoFun2(stringname){Console.WriteLine(name+"fun2");}//////测试方法///publicvoidTest(){//event无须new初始化Go+=GoFun;//errorGoEvent+=GoFun;//successGogo=ne

3、wGo(GoFun);//successGoEvent+=GoFun2;//successgo+=GoFun2;//success//执行-结果一致(无区别)GoEvent("test");go("test");}}可以看到,delegate与event其实差不多,就是区别于初始化的问题。我们再来看一组代码:classProgram{staticvoidMain(string[]args){EventClasse=newEventClass();e.GoEvent+=e.GoFun;e.GoEvent+=e.GoFun2;EventClass.Gogo=newEven

4、tClass.Go(e.GoFun);go+=e.GoFun2;//执行//错误1事件“EventClass.GoEvent”只能出现在+=或-=的左边(从类型“EventClass”中使用时除外)e.GoEvent("test2");//errorgo("test2");//successConsole.WriteLine("done.");Console.ReadKey();}}可以看到区别出来了:event在外部只能使用+=或-=操作。/**当有event关键字时,程序能运行正常。我把event去掉,程序也一样能运行正常。*event只不过是限制'委托实例对象'

5、的能力用的,是委托的子集。*如:事件只能进行+、-不能直接Func(......)。而我取掉event之后,就可以直接用了。*/再来看看反编译会的结果:可以看到图Go委托依然有调用的方法event事件只存在add和remove方法event通过对delegate的限制来封装一部分本来就不应该暴露在外的行为

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。