2011-02-23 16 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();)。這都假設修飾符被設置爲允許這種訪問。

問題是,它允許通知一個事件,而不是每次需要執行某個操作時手動調用某個特定的方法。

相關問題