2011-02-23 42 views
2

我看了一些事件教程,只是不明白什么是简单的代码受益像this..method应该用同样的方式:为什么要在足够的地方使用事件?

class Bulb 

{ public delegate void handler(); 
    public event handler Glowing; 
... 
    Glowing+=SomeMethod; 
    private void TurnOn 
    { 
    Glowing(); 
    } 

    private void SomeMethod 
    { 
    } 

} 

回答

2

的想法是不同的类,可容纳三个不同灯泡可以通过事件(如果它实现了处理程序)得到通知,指示灯已经打开并且正在发光。

所以好处不在于简单的类,而在于任何类/对象将要保持/使用灯泡类的实例。

。希望做出一些感觉:)

4

简单的活动让其他人使用你的代码时有事件发生时进行,他们希望一些自定义的执行情况(当灯泡发亮)。

只需调用您的方法不会告诉任何人发生了一些事情。

活动是非常基本的元素任何事件驱动编程

如果你的程序并不需要告诉你没有需要实现这样的功能的事件。然而具有这种功能有益处。


例如使用List类,你不知道,当一个项目得到了添加到它(如果在某些时候一些其他的代码确实是),但在ObservableCollection你当通知项目时添加或删除。


事件是由对象送到信号的动作的发生的消息。该操作可能由用户交互引起,例如鼠标点击,或者可能由其他一些程序逻辑触发。

2

活动在方法变得方便,当你有一个类依赖的是需要知道或大约有状态变化通知:

public class Lamp 
{ 
    Bulb inThelamp = new Bulb(); 
    inTheLamp.Glowing += myLampMethod; 

    // If these arguments have been defined for this event that is 
    public void myLampMethod(object sender, EventArgs e) 
    { 
     // Code to react to the light suddenly being on 
    } 
} 

这使得灯泡类要认识到的东西已经打开灯泡。在很多情况下,它将通过灯泡中的一些操作(点击,按钮等)。但在某些情况下,它可能是外部类,它直接调用公共Bulb属性而不使用灯本身(例如if(PowerCompany.BillsPaid) Lamp.BulbInTheLamp.TurnedOn();)。这都假设修饰符被设置为允许这种访问。

问题是,它允许通知一个事件,而不是每次需要执行某个操作时手动调用某个特定的方法。

相关问题