2010-08-17 89 views
3

我們可以使用委託調用回調方法。 例如,爲什麼我們需要事件回調?

public delegate bool ContinueProcessing();

//後來在代碼我們可以寫,

ContinueProcessing CP =新ContinueProcessing(IsDataAvailable);

cp + = new ContinueProcessing(IsTransactionComplete);

//以後)的方法的代碼認定中

布爾IsDataAvailable( { 返回真; }

bool IsTransactionComplete() { return true; }

cp.Invoke();

上述調用將一個接一個地調用兩個布爾方法。 爲什麼我們需要「事件」? 「活動」的目的是什麼?

回答

9

事件是回調,你可以有多個訂戶誰不互相干擾,不能互相呼叫。

代表提供了「這是我想要採取的行動」的封裝,事件提供了pub/sub模型的封裝。

查看我的article on events瞭解更多信息。

+0

感謝它有幫助 – Ashish 2010-08-17 19:03:21

0

代表非常通用。它們可以在任何情況下使用:在同一班級中,在班級之間,在靜態方法中等。

活動更具體 - 它們專門用於一個類別訂閱另一個類別提出的活動。

委託是一種(類型)類型安全的指向函數的指針,而事件是圍繞代理提供的包裝,爲訂閱/取消訂閱/提升事件提供標準接口。

+0

活動只在委託周圍添加「添加」和「刪除」方法。我們可以在不提及「事件」的情況下實現一切。你爲什麼說代表更通用? – Ashish 2010-08-17 19:06:17

+0

代表更具通用性,因爲它們可用於更廣泛的場景選擇。你可以用代表做很多事情,包括實施事件,但事件你只能做一件事:事件。 – zvolkov 2010-08-17 20:28:01

0

看起來像'event'關鍵字是一個委託聲明的修飾符,它允許它被包含在一個接口中,它在聲明它的類中調用它的約束,爲它提供一對可定製的訪問器(添加和刪除)並強制委託的簽名(當在.NET框架中使用時)。