2013-02-08 109 views
-3

在使用事件處理程序和委託方法之間做出決定有哪些好的考慮?C#委託與事件處理程序

例如,我選擇委託方法選項來將功能實現推遲到另一個對象。我選擇事件處理程序選項主要是爲了讓其他對象訂閱更新。

但顯然,正如你所看到的,這些都是非常粗略的標準。我已經閱讀了一些關於Stackoverflow的類似問題,但它們都是針對非常具體的問題,而我對通用用法更感興趣。

任何輸入?

謝謝。

+1

「委託方法」是什麼意思?沒有看到他們的例子,甚至是一個場景,都很難比較兩種選擇。 – 2013-02-08 16:13:12

+2

這個問題並不適合本網站的格式。預計問題不容易發表意見/辯論。你應該參考http://stackoverflow.com/faq。 – itsme86 2013-02-08 16:18:30

+0

事件處理程序*是*代表。如果您問是否最好使用實際事件或僅公開揭露代表,答案就是使用事件。 – JosephHirn 2013-02-08 16:22:43

回答

1

如上所述,它會根據您的情況而有所不同。 Delegates用於要求你的邏輯有一個單獨的方法來實現你的邏輯。這使得使用Delegate難以證明自己的理由。然而,與Lambda ExpressionsAnonymous MethodsDelegate實際上成爲一個非常有用,功能強大Type很容易證明。

Delegates是偉大的:

  • 事件處理程序
  • 啓動一個線程
  • 回調
  • LINQ

使用特殊的代碼模板的概念概念的Delegate是相當不錯。

如果您在尋找Class以便在操縱Object時提供某種形式的通知,Event Handler將是理想選擇。最常見的實現和最簡單的例子是User Interface。每個Class代表Control,並且Interface中的每個Control將具有事件以指示何時進行改變。

A Button它的全部用途是點擊;但您不需要它執行或執行任何操作,直到它被點擊。 Event Handler的示例。

他們經常使用Delegate來聲明自然。原因是Delegate Object封裝了一個方法,以便它可以被匿名調用。 EventClass允許客戶給出發生Event時應該調用的方法的一種方法。

所有Event Handler是,是一個程序,被稱爲相關Event。這些Event Handlers需要兩個元素:

  • Delegate
  • 任選地,一類以保存Event數據。

所以在大多數情況下,它們並駕齊驅。

顯然你的問題沒有提供太多的細節,所以很難對你的標準進行物理回答或磨練。

一些網站,以幫助您:

這些都是重要的概念,以便了解他們是非常重要的。希望這有助於澄清一點。