看到百度上有關事件委託的通俗易懂的講解,以爲解釋的不錯,照搬過來以溫習之用。html
樓主的疑問和我當初很像,你努力的想弄明白什麼是委託,你也從側面瞭解到委託很重要,可是你並不知道委託具體是用來幹什麼的因此你才疑惑。
考慮一個問題,假設有兩個對象 A 和B,如今A想要知道B一個狀態(B_Staus)的變化,它立刻去執行一個動做(A_Action),用你如今的思路你該如何解決這個問題?
有三種思路,第一種,A設個定時器每隔一段時間就檢測B的狀態,可是這種方案缺陷太大,你要不停的檢測B的狀態,可能B一年纔回變一次,那就太浪費了。並且即便這樣實時性也很差,不能保證立刻檢測到變化。
第二種 是將 A本身傳遞給B,讓B發生變化後調用A的函數,可是這樣B就要對A產生依賴,假如又來個C也要監聽,那你還要改動B的代碼,很不便,並且B要知道全部A的信息,這也是一種潛在的隱患。
第三種,就是隻將A須要執行的A_Action函數傳遞過去,B發生變化以後自動執行這個函數,那就須要有一種傳遞函數的方案,這就是委託。
委託去定義一個函數的簽名,所謂簽名就是這個這個函數接收什麼參數,返回什麼參數,分別都是什麼類型的。而後B 產生一個這個委託的實例,這就是事件。A或者C將本身的方法綁定到這個事件上來,便可。
摘自:c#
https://zhidao.baidu.com/question/1573655955150837900.html?qbl=relate_question_1&word=eventhandler函數