C#語言知識點整理-委托-創(chuàng)新互聯(lián)

引言:

成都創(chuàng)新互聯(lián)公司主營固陽網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,app開發(fā)定制,固陽h5小程序開發(fā)搭建,固陽網(wǎng)站營銷推廣歡迎固陽等地區(qū)企業(yè)咨詢

   在我看來委托一直是一種比較特別的類型,剛開始學的時候總是朦朦朧朧的不知所云。有必要從頭來過,記個筆記。該篇從委托的定義,委托的優(yōu)點,如何理解委托以及委托的協(xié)變和逆變 依次展開。

目錄:

一、委托的定義:... 1

二、委托的優(yōu)點:... 1

三、如何理解委托:... 1

四、委托中的協(xié)變與逆變:... 3

五、總結(jié)。... 5

六、參考:... 5

一、委托的定義:

   委托是一種定義方法簽名的類型,可以與具有兼容簽名的任何方法關(guān)聯(lián)。(這里的簽名包含返回值)

二、委托的優(yōu)點:

1) 委托類似于 C++ 函數(shù)指針,但它們是類型安全的。

2) 委托允許將方法作為參數(shù)進行傳遞。

3) 委托可用于定義回調(diào)方法。

4) 委托可以鏈接在一起;例如,可以對一個事件調(diào)用多個方法。

5) 方法不必與委托簽名完全匹配。(C#4.0)

6) C# 2.0 引入的 匿名方法 和C# 3.0引入的 Lambda 表達式都可編譯為委托類型,此類方法允許將代碼塊作為參數(shù)傳遞,以代替單獨定義的方法。

三、如何理解委托:

   有如委托的字面理解:將自己的事務(wù)囑托他人代為處理 ,delegate個人理解是 代理方法執(zhí)行方法的內(nèi)容。

   組合多路廣播委托:+ 運算符將它們分配給一個要成為多路廣播委托的委托實例。- 運算符可用來從組合的委托移除組件委托。只有相同類型的委托才可以組合。

委托綜合示例:

1: using System;
2: using System.Collections.Generic;
3: using System.Linq;
4: using System.Text;
5: 
6: namespace CSharp.Delegate
7: {
8:     //聲明委托
9:     public delegate void Del(string message);
10: 
11:     class Program
12:     {
13:         // Create a method for a delegate.
14:         public static void DelegateMethod(string message)
15:         {
16:             System.Console.WriteLine(message);
17:         }
18: 
19:         //定義回調(diào)方法
20:         public static void MethodWithCallback(string message, Del callback)
21:         {
22:             callback(message);
23:         }
24: 
25:         public static void Hello(string s)
26:         {
27:             System.Console.WriteLine("  Hello, {0}!", s);
28:         }
29: 
30:         public static void Goodbye(string s)
31:         {
32:             System.Console.WriteLine("  Goodbye, {0}!", s);
33:         }
34: 
35:         static void Main(string[] args)
36:         {
37: 
38:             //new方法實例化委托,將方法作為參數(shù)進行傳遞
39:             Del handler = new Del(DelegateMethod);
40:             handler("向大家問個好吧。");
41:             MethodWithCallback("大家好!", handler);
42: 
43:             //匿名方法來實例化委托
44:             Del anotherhandler = DelegateMethod;
45:             anotherhandler("Hello World");
46:             MethodWithCallback("I am coming!", anotherhandler);
47: 
48:             //“Lambda 表達式”是一個匿名函數(shù),可以其表達式分配給委托類型
49:             Del lamDel = (string s) =>
50:             {
51:                 Console.WriteLine(s);
52:             };
53:             lamDel("我是Lambda匿名委托!");
54: 
55:             //
56:             //多路組合委托
57:             //
58:             //Hello,Goodbye,DelegateMethod 組合委托到d
59:             Del d;
60:             d = Hello;
61:             d += Goodbye;
62:             d += new Del(DelegateMethod);
63: 
64:             d("David");
65: 
66:             //移除委托DelegateMethod
67:             d -= DelegateMethod;
68:             d("David");
69: 
70:         }
71:     }
72: }

創(chuàng)新互聯(lián)www.cdcxhl.cn,專業(yè)提供香港、美國云服務(wù)器,動態(tài)BGP最優(yōu)骨干路由自動選擇,持續(xù)穩(wěn)定高效的網(wǎng)絡(luò)助力業(yè)務(wù)部署。公司持有工信部辦法的idc、isp許可證, 機房獨有T級流量清洗系統(tǒng)配攻擊溯源,準確進行流量調(diào)度,確保服務(wù)器高可用性。佳節(jié)活動現(xiàn)已開啟,新人活動云服務(wù)器買多久送多久。

文章名稱:C#語言知識點整理-委托-創(chuàng)新互聯(lián)
網(wǎng)址分享:http://bm7419.com/article36/hohsg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站、做網(wǎng)站、Google、網(wǎng)站設(shè)計公司、網(wǎng)站設(shè)計、自適應(yīng)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站建設(shè)