国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

C#基礎學習之委托的理解和應用

2019-11-17 02:44:06
字體:
來源:轉載
供稿:網友

C#基礎學習之委托的理解和應用

委托的使用和語法定義

委托的使用是由四步來完成的,依次為:聲明委托、創建委托對象、委托關聯方法、調用

我們用一個例子來說明這四步如何操作,我們完成一個老板委托員工寫報告的實例,看如何實現。

首先我們應該定義兩個類,老板類Boss和員工類Employee,老板委托員工寫報告,其實是老板什么都沒做,而是告訴員工去做事情(寫報告),

那我們的定義如下

public class Boss    {        //聲明委托        public delegate void DoWorkEventHandler(string content);        //創建委托對象        public DoWorkEventHandler WorkEventHandler;        //做事情        public void DoWork(string content)        {            if (WorkEventHandler != null)            {                WorkEventHandler.Invoke(content);                //或者如下調用                //handler(content);            }        }}
委托的聲明和創建都是在Boss里定義的,DoWork內部只是對委托進行了調用,但目前看不出來到底做了什么事情。再看員工類的實現
public class Employee    {        public void DoWork(string content)        {            Console.WriteLine(string.Format("老板委托我{0}", content));        }    }
員工類里定義了DoWork方法,實現具體做什么事情
那接下來我們就來看Boss是如何委托給Employee做事情的
public class DelegateExecutor    {        public static void Run()        {            Boss boss = new Boss();            string content = "寫報告";            //委托注冊關聯方法            boss.WorkEventHandler = new Boss.DoWorkEventHandler(new Employee().DoWork);            //            boss.DoWork(content);        }    }
其實在調用boss.DoWork的時候,內部是委托調用了Employee.DoWork方法。好了,這樣我們最終完成老板委托員工寫報告的功能。

委托的優點

如果我們按照一般的寫法實現以上功能的話,我們可能這樣寫

public class Boss    {        public void DoWork(string content)        {            Employee employee = new Employee();            employee.DoWork(content);        }    }

我們看這樣有個顯著的問題就是Boss和Employee類產生了直接依賴,耦合在了一起,然而使用委托實現的例子中,Boss完全不知道Employee的存在,

消除了兩者之間的耦合,是不是比傳統的寫法要好很多。

下篇文章我來介紹事件的使用


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 江西省| 洛隆县| 聂拉木县| 江永县| 涞水县| 阳城县| 宁波市| 霸州市| 得荣县| 武强县| 阿坝县| 平陆县| 景泰县| 驻马店市| 揭东县| 枣阳市| 鹤岗市| 道真| 南充市| 五大连池市| 聂拉木县| 凌云县| 娄底市| 通辽市| 如皋市| 贵州省| 漾濞| 雷波县| 阿尔山市| 杂多县| 东宁县| 左权县| 宣恩县| 青阳县| 井陉县| 巴东县| 永平县| 涟源市| 师宗县| 永顺县| 于都县|