91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

.net中的委托是什么意思

發布時間:2021-08-18 09:47:41 來源:億速云 閱讀:169 作者:chen 欄目:編程語言

這篇文章主要介紹“.net中的委托是什么意思”,在日常操作中,相信很多人在.net中的委托是什么意思問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”.net中的委托是什么意思”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

什么是委托

可以用兩點概括:

1,最通俗的理解是,一個安全的'函數指針'

2,本質上,委托是一個類(class)(可以通過IL證明如下圖),并且委托包含的是具有相同方法簽名相同返回值的多個方法。

.net中的委托是什么意思

委托的類圖:

.net中的委托是什么意思

從上圖我們可以得到幾點信息,1,委托是一個類(class)。2,委托繼承自System.MulticastDelegate類型。

為什么要使用委托

更通俗的說法是,使用委托能夠帶來什么好處。

下面通過一個小的例子來演示一下使用委托的好處。需求是,通過輸入的name,控制臺分別打印中文和英文的問候語。

不使用委托:

 1 namespace DelegateDemo 2 { 3     class Program 4     { 5         static void Main(string[] args) 6         { 7             //通過輸入的name,控制臺分別打印中文和英文的問候語 8             Hello("麥子", Language.Chinese); 9             Hello("mcgrady", Language.English);10 11             Console.ReadKey();12         }13 14         /// <summary>15         /// 問候16         /// </summary>17         /// <param name="name"></param>18         /// <param name="lang"></param>19         private static void Hello(string name, Language lang)20         {21             if (lang == Language.Chinese)22             {23                 ChineseHello(name);24             }25             if (lang == Language.English)26             {27                 EnglishHello(name);28             }29         }30 31         /// <summary>32         /// 中文問候33         /// </summary>34         /// <param name="name"></param>35         private static void ChineseHello(string name)36         {37             Console.WriteLine(string.Format("你好,{0}", name));38         }39 40         /// <summary>41         /// 英文問候42         /// </summary>43         /// <param name="name"></param>44         private static void EnglishHello(string name)45         {46             Console.WriteLine(string.Format("hello,{0}", name));47         }48 49     }50 51     /// <summary>52     /// 語言類型53     /// </summary>54     public enum Language55     {56         English,57         Chinese58     }59 }

不使用委托的時候,需要使用一個枚舉Language來表示使用中文問候還是英文問候,并且還要進行if...else...的判斷。

當可以直接傳遞方法的時候也許就簡單多了,下面來看一下。

使用委托:

 1 namespace DelegateDemo 2 { 3     //聲明委托 4     delegate void MyDel(string name); 5  6     class Program 7     { 8         static void Main(string[] args) 9         {10             //通過輸入的name,控制臺分別打印中文和英文的問候語11             Hello("麥子", ChineseHello);12             Hello("mcgrady", EnglishHello);13 14             Console.ReadKey();15         }16 17         /// <summary>18         /// 問候19         /// </summary>20         /// <param name="name"></param>21         /// <param name="myDel"></param>22         private static void Hello(string name, MyDel myDel)23         {24             myDel(name);25         }26 27         /// <summary>28         /// 中文問候29         /// </summary>30         /// <param name="name"></param>31         private static void ChineseHello(string name)32         {33             Console.WriteLine(string.Format("你好,{0}", name));34         }35 36         /// <summary>37         /// 英文問候38         /// </summary>39         /// <param name="name"></param>40         private static void EnglishHello(string name)41         {42             Console.WriteLine(string.Format("hello,{0}", name));43         }44 45     }46 }

所以總結起來,委托帶來的好處主要有以下幾點:

1,省去了大量的 if...else...或switch... 的判斷,使得程序更面向對象了。

2,解耦,程序更容易擴展。例子:Tracy.Proxy接口代理組件,記錄xml日志和性能日志。

當然,這只是一個例子,目的是說明使用委托帶來的好處,其實還有很多地方都使用到了委托,比如winform和webform的按鈕click事件,Linq中的Func和Action委托等。

委托的應用場景

1,winform和webform的按鈕click事件。

2,Linq中的Func和Action委托。

3,Tracy.Proxy接口代理組件

用XMind來總結一下:

.net中的委托是什么意思

到此,關于“.net中的委托是什么意思”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

繁昌县| 南靖县| 高尔夫| 葫芦岛市| 湖口县| 祁门县| 盐源县| 上栗县| 灵武市| 长沙市| 孙吴县| 平乡县| 鹤峰县| 鹿泉市| 嘉善县| 仁布县| 如皋市| 会泽县| 霍林郭勒市| 五华县| 犍为县| 和田县| 正镶白旗| 新安县| 鄂州市| 营山县| 连州市| 巴中市| 方城县| 海门市| 南安市| 枣强县| 元谋县| 兴宁市| 昌图县| 琼中| 邵阳市| 通化市| 英山县| 体育| 三台县|