判断题:
事件就是一种代理?

解决方案 »

  1.   

    你想想设计所谓事件的人要达到的目标是什么?
    一个类或对象发生了某种状态的改变时,它就把这个状态改变通知给所有感兴趣的客户类。客户类们在接到通知后做一些相应的反应。但我们事先不知道谁会对这个类的状态改变感兴趣,还有对这个类的状态改变会做些什么样的动作。事先不知道谁,还有谁的方法会被调用时,可以一下联想到delegate.但delegate在这种状况下过于灵活啦,以至于类以外的客户类都有能力改变该类的状态。
    事件本身的目的是一个类状态改变时通知所有客户类,但delegate时,客户类甚至可以粗暴的改变类的通知行为。为了避免这两种问题,加个event关键字。类的客户再也不能随心所欲的执行该类的delegate,也不能通过=操作,影响该类本要达到的通知行为。event保证了一个对象的状态改变是自己引发的,而不可能是别的对象引发的。状态改变时依次调用的方法不会被莫名其妙的被替换掉。因为在该对象的外部,别的对象只能进行+=、-=。
      

  2.   

    当然,谢谢 namhyuk(namhyuk) ( ) 信誉:100 讲的更清楚。