【C#從入門到遛彎】第十四章 · 委託的入門介紹&日常開發的使用場景
委託:把事情託付給別人或別的機構辦理
這就是委託,我只負責結果,我不管實現
在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會替你完成操作就對了
非常類似你的老闆,但是很高效,一天就完成了需求不是嗎:)
通俗易懂,漸入佳境。
相關文章
- 快速入門Redis呼叫Lua指令碼及使用場景介紹Redis指令碼
- Vue入門到關門之Vue介紹與使用Vue
- MapStruct的介紹及入門使用Struct
- NodeJs 入門到放棄 — 入門基本介紹(一)NodeJS
- 小程式從入門到開發
- C#快速入門教程(17)—— 委託、事件與Lambda表示式C#事件
- scala 從入門到入門+
- makefile從入門到入門
- JVM 從入門到實戰--- 01 JVM 基本介紹JVM
- 『python入門:』 python的介紹Python
- ccs的介紹,安裝和使用入門
- 【Caffe篇】--Caffe從入門到初始及各層介紹
- Mybatis 入門介紹MyBatis
- Rocketmq 入門介紹MQ
- libevent入門介紹
- Django 入門介紹Django
- linux介紹(入門)Linux
- Nginx 入門介紹Nginx
- rollup入門介紹
- Android入門教程 | AsyncTask 使用介紹Android
- 智慧合約從入門到精通:智慧合約的應用場景
- 使用魔搭開發自己的語音AI:從入門到精通AI
- U3D遊戲開發從入門到彎道超車(一):序章3D遊戲開發
- java語言的入門介紹Java
- k8s從入門到放棄(1):介紹&上手K8S
- 簡單的區塊鏈開發入門:Hyperledger Iroha介紹區塊鏈
- Angular 從入坑到挖坑 - Angular 使用入門Angular
- kafka從入門到關門Kafka
- Spring Shell入門介紹Spring
- MyBatis從入門到精通(一):MyBatis入門MyBatis
- U3D遊戲開發從入門到彎道超車(2):《Flappy Bird》場景動畫及角色動畫製作3D遊戲開發APP動畫
- Python - pydantic 入門介紹與 Models 的簡單使用Python
- IOS 初級開發入門教程(一)介紹篇iOS
- MQMQ的快速入門+應用場景MQ
- Service Worker 從入門到出門
- SAP OData 開發從入門到提高教程的目錄
- WebSocket協議入門介紹Web協議
- 整合學習入門介紹