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

Head First C# 中文版 图文皆译 第十一章 事件和代理 page505

2008-11-10 13:20 375 查看
 

任何对象都可以注册一个公有事件<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

假设我们添加了一个新类进模拟器去,一个球棒类,它有一个HitTheBall事件。它是这样工作的:如果模拟器发现球手击球,就调用球棒对象的OnHitTheBall()方法,这将会触发一个HitTheBall事件。

所以现在我们可以添加一个bat_HitTheBall方法到球类,它注册球棒的HitTheBall事件。然后击球时,球的事件处理器调用它的OnBallInPlay()方法来触发BallInPlay事件,连锁反应就开始了。守场员守场,球迷欢呼,裁判大吼...我们就有了一场球赛。



...但是并那不是总是很好!

球赛里并不是只有一个球。但是如果球棒用一个事件来代表它击打的球,那么所有的球都可以注册它了。这意味着我们让自己陷入了一个险恶的小bug--如果程序员恰巧添加了另外三个球会怎么样呢?那么击球手就会晃动,击球,会有四个球飞入球场!

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c# 工作