2014-02-20 44 views
-4

我已經編程了大約2個月,而且我自學,而我得到關於繼承,多態性,接口,委託,數據的基礎知識&引用類型,循環,if/switch,LINQ,xml,SQL,等等等等。我只是無法將我的頭圍繞事件!任何人都可以用我能理解的方式解釋事件嗎?

我已經在網上閱讀了至少4-5篇不同的教程和評論,但他們對我來說太混亂了,有一個Event類型,EventHandler,委託,事件提交/訂閱,有太​​多東西在發生,不知道我是不是很頭重腳輕,但對我來說這是無法理解的。

請向我解釋一些事件,讓我這樣的初學者程序員能夠理解,非常感謝!

+0

您位於錯誤的網站。 SO是一個關於實際編碼問題的Q&A網站。 –

+0

事件類似於某人可以響應的操作。如果我跌倒(事件),你可以幫我站起來(處理程序)。作爲初學者,最好集中精力理解概念。不要迷失在與其他技術(例如代表或設計模式等)的細節和相似之處中。 –

+0

事件驅動編程令人困惑,因爲程序並不總是具有程序員可見的開始或結束。在幕後,實際的代碼仍然是按順序運行的,但作爲開發人員所擔心的是「當我單擊此按鈕時,此代碼執行。」您的開發環境負責其餘部分。 – Rainbolt

回答

0

它沒有什麼比這更簡單:

http://en.wikipedia.org/wiki/Observer_pattern

其核心事件只包含一個函數列表(或至少一種方式來訪問這些功能),這將被稱爲事件被提出。提升事件只是觸發主體通知所有訂閱的功能(閱讀:包含在列表中)到該事件的行爲。

訂閱列表的組成方式因框架的功能而異。在觀察者模式中(通常在Java中使用),可以通過傳入一個實現了適當接口的對象來完成此操作。主題遍歷觀察者列表並調用接口定義的函數。這種模式的缺點是,你必須有兩個完全不同的主題之間的命名衝突的可能性,這可能很難(儘管不是不可能)解決。

代表通過允許您傳遞函數或方法本身來解決此問題。一個委託有點像一個接口,它建立了一個契約,而不是類成員,它只是爲一個函數指定一組參數。然後,主題可以遍歷這些方法的列表,這些方法通常稱爲事件處理程序,並傳遞適當的參數。與觀察員模式相比,代表們不那麼麻煩,但他們仍然很耗時。

最近C#增加了通用代理ActionFunc,這些代碼更易於使用。

1

行動和反應。

正如John在您的評論中所說的那樣。「當我點擊一個按鈕時,會發生一些事情!」

相關問題