2010-12-11 57 views
0

我正在編寫一些使用事件的C#代碼,並且Resharper詢問我是否想創建事件調用者。它生成以下代碼:事件調用者的目的是什麼?

 LowFuel handler = lowFuel; 
     if (handler != null) handler(); 

也許我失去了一些東西還是有點生疏,但什麼是事件調用器?我知道處理器是事件的實際邏輯將去的地方。

由於

回答

0

事件調用器(可怕術語)是簡單地調用該事件的代碼。

從您的代碼示例中不是100%清楚,但通常您會聲明LowFuel與使用分開(可能在一個接口中),這就是爲什麼您需要在調用它之前檢查它的原因。

3

顧名思義,它是一種用於提升事件的方法。它通常比直接調用委託要好,原因有幾個,因爲它在調用它之前檢查處理器是否爲空(所以你不需要檢查每次你想調用事件)。

另外,請注意,默認情況下,Resharper創建事件調用者爲公共和非虛擬。恕我直言,它不應該是公開的,它通常沒有任何意義,從類聲明它的外部調用一個事件。此外,使此方法變爲虛擬通常很有用,因此您可以在派生類中重寫它,而不是訂閱基類的事件。我總是聲明以下事件調用者:

protected virtual void OnFoo(FooEventArgs args) 
{ 
    var handler = Foo; 
    if (handler != null) 
     handler(this, args); 
} 
相關問題