【C#從入門到遛彎】第十四章 · 委託的入門介紹&日常開發的使用場景

唐三十胖子發表於2018-11-15

委託:把事情託付給別人或別的機構辦理

 

這就是委託,我只負責結果,我不管實現

 

在C#開發中使用場景有:

1.自己使用委託書寫程式碼,方便一次性呼叫n個函式

2.自己委託別人,我只需要有這個委託例項,別人拿去完成就行

你和小老弟A負責做模組,你做UI他做功能

你很快完成了UI的搭建然後上分去了,告訴A把各個按鈕的功能做好

 

然後小老弟A趁你上分就如下完成功能

按鈕1:開啟攝像頭,開啟揚聲器(對應Func1,2)

按鈕2:播放《小蘋果》,登陸貼吧(對應Func3,4)

按鈕3:一鍵清除回收站,刪除空資料夾(對應Func5,6)

 

A通過寫了三個函式

Func1 Func2 Func3完成了功能

當然瞭如果A聰明一點會寫成Func1-Func6 ,現在我們就假設他寫了這六個函式吧

 

所以幾天後,你和A把功能完成了交給老闆皆大歡喜

再之後幾天A辭職了,你負責這塊功能

 

之後的某天

老闆告訴你一天內加個按鈕4,按鈕5,按鈕6

(在老闆眼裡這些功能都是實現過的,一天足夠了)

 

按鈕4:點選後按鈕2實際功能變成  播放《青花瓷》

按鈕5:點選後按鈕3實際功能變成  登陸今日頭條

按鈕6:點選後按鈕1實際功能變成  觸發按鈕2

一般思路:

點選按鈕4後修改按鈕2的邏輯,

改變繫結按鈕2的點選觸發函式

本來點選觸發Onclick_2():Func3(“小蘋果“),Func4(“今日頭條“)

點選按鈕4後按鈕2繫結的觸發變成Onclick_2_1():Func3(“青花瓷“)

點選按鈕5後按鈕3繫結的觸發變成Onclick_3()_1:Func4(“今日頭條”)

 

但是到按鈕6按鈕事件就變得複雜起來,你可能是播放《小蘋果》,登陸貼吧

也可能因為按鈕4和按鈕5的原因,變成播放《青花瓷》,登陸今日頭條

 

點選按鈕6就需要四種情況!!!甚至還要加上判斷語句!!!

這時候你就會想是不是可以簡化

委託的好處就來了

很簡單宣告三個委託:Btn1Handler  Btn2Handler  Btn3Handler

Onclick_1()只需要呼叫委託Btn1Handler.Invoke()

Onclick_2()只需要呼叫委託Btn2Handler.Invoke()

Onclick_3()只需要呼叫委託Btn3Handler.Invoke()

 

按鈕4的操作:Btn2Handler = null;  Btn2Handler+=Func3(“青花瓷”)

按鈕5的操作:Btn3Handler = null;  Btn2Handler+=Func4(“今日頭條”)

按鈕6的操作:Btn1Handler = null;  Btn1Handler+= Btn2Handler

 

還記得一開始說過的委託就是不管實現,只管結果嗎,你在Func1()中呼叫了Btn1Handler

之後你就可以不用管這個Handler幹了什麼,你需要知道Btn1Handler會替你完成操作就對了

 

非常類似你的老闆,但是很高效,一天就完成了需求不是嗎:)

通俗易懂,漸入佳境。

相關文章