2015-03-31 38 views
1

我是C#編程語言的學習者。我無法理解關於Events and Delegates的基本概念。我查看了很多關於Events and Delegates的教程,但是我仍然對他們的概念感到困惑。我另外不明白利用事件的基點。我知道Delegates有一些代表類似於函數指針,我們可以調用任何使用Delegate的函數參數和返回類型,但爲什麼使用事件。有人同樣澄清了一個情況,其中重要的是利用事件的理由是,如果我不使用Events也請解釋是否EventHandler是一種類型或類?在下面的代碼中澄清關於C#中的事件和代表#

public static event EventHandler myevent; 

謝謝。

+0

您是否閱讀過[事件](https://msdn.microsoft.com/library/8627sbea.aspx)關鍵字和[如何使用事件](https://msdn.microsoft.com/library/ awbftdfh.aspx)? – Corak 2015-03-31 13:18:47

+0

如果一個類/實例暴露了一個事件,它會告訴全世界:「嘿,也許在我生命中的某個時刻,可能會發生一些可能會讓你感興趣的事情,如果你真的有興趣瞭解它,註冊這裏!」現在其他的對象可以說:「好吧,我有興趣知道是否發生了什麼事情,所以我會通過給你一個方法(委託)來註冊/訂閱該事件,如果確實有事情發生,我希望你爲我運行發生。」 – Corak 2015-03-31 13:29:50

回答

1

如果你得到的代表比你可以想象的只是一個集合/列表的事件,你會按需求調用(如果你提出的事件) - 僅此而已。

當您不知道(或不想知道)誰可能對這些信息感興趣時,讓信息從對象中流出是一種方便的形式。

對於你的問題的第二部分:EventHandler只是一個delegate,給出了一個常見的形式(事件的發送者和信息EventArgs

0

活動提高了標誌的東西發生,常見的有當你點擊一個按鈕時,它會引發一個事件,告訴別人發生了「事情」。事件處理程序在引發該事件時執行某些操作。

所以,當你點擊一個按鈕,你可能想做一些事情,你設置一個處理程序,以激活當按鈕被點擊。您還可以將多個事件處理程序附加到特定事件,每個事件處理程序執行不同的事情。

事件關鍵字只是一種創建您自己的'按鈕點擊'或'選擇已更改'事件的方法,EventHandler可讓您捕捉它們並在此之後進行操作。

0

EventHandler是一個委託,是一個委託,是一個委託...一個功能模式,如果你願意。

整個EventDelegate系統更多的是一種設計模式,它被構建到語言中。一旦你習慣了它,並開始定義自己的DelegatesEventArgs,你會發現它很方便。 另外他們的用法是常識,所以如果你想分享你的圖書館,你需要更少的文檔。