您的位置:首页 > 编程语言 > C#

Head First C# 中文版 图文皆译 第十一章 事件和委托 page511

2008-11-12 22:43 267 查看
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />


金镶玉蟹的案例

其他寻宝者怎么会比亨利更早的找到螃蟹呢?

这个传奇的关键在于寻宝者是怎么搜寻宝物的。但是我们要先看一下亨利在偷来的类关系图里面看到了什么。

在偷来的类关系图里,亨利发现金镶玉蟹在每次有人靠近的时候都会触发RunForCover事件。更好的是事件包含一个NewLocationArgs,它说明螃蟹会跑到哪儿去。但是其他的寻宝者不知道这回事,所以亨利觉得自己可以先找到螃蟹。



亨利是怎么利用他的内幕消息的呢?

亨利在自己的构造器里注册自己的ListenForClues()作为螃蟹的引用的RunForCover的事件处理器。然后派一个手下过去惊动螃蟹,它会逃跑,躲起来,并触发RunForCover事件--这就给了亨利的ListenForClues()方法需要的所有信息。



亨利就这么失败了。他自己注册事件时就不经意的帮别的寻宝者都注册了!这意味着每个人的事件处理器都关联到同一个事件。所以螃蟹逃跑时,每个人都收到通知。但是亨利不知道自己什么时候被调用,要是别人先注册,别人就先得到通知。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c#
相关文章推荐