C#委托的基礎(chǔ)概念和特點(diǎn)

本篇內(nèi)容主要講解“C#委托的基礎(chǔ)概念和特點(diǎn)”,感興趣的朋友不妨來看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“C#委托的基礎(chǔ)概念和特點(diǎn)”吧!

創(chuàng)新互聯(lián)公司是一家專注于網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)與策劃設(shè)計(jì),龍游網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)公司做網(wǎng)站,專注于網(wǎng)站建設(shè)十載,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:龍游等地區(qū)。龍游做網(wǎng)站價(jià)格咨詢:18982081108

委托具有以下特點(diǎn):

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

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

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

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

方法不需要與委托簽名精確匹配。有關(guān)更多信息,請(qǐng)參見協(xié)變和逆變。

C# 2.0 版引入了匿名方法的概念,此類方法允許將代碼塊作為參數(shù)傳遞,以代替單獨(dú)定義的方法。

在C#中使用委托分為三步:

1.定義委托:

//聲明委托  public delegate void MyDel();

2.實(shí)例化委托:

TestDel t = new TestDel();   Console.WriteLine("-----以下是簡(jiǎn)單使用委托演示--------");  //t.MyMethod();  ///實(shí)例化委托,用一個(gè)方法來進(jìn)行實(shí)例化  ///該方法簽名要與委托簽名一致  MyDel del = new MyDel(t.MyMethod);

3.調(diào)用委托:

///調(diào)用委托  del();

好了,其實(shí)委托的變化很復(fù)雜,但基本都會(huì)符合這么三個(gè)步驟,說過了,這些,再來看一下完整的代碼:

namespace DelegateDemo{   //聲明委托   public delegate void MyDel();   //聲明帶參的委托   public delegate void MyDel2(int num1, int num2);   //聲明帶有返值的委托   public delegate string MyDel3(string s);   //聲明委托用于演示匿名方法   public delegate string ProcessString(string s);   class Program { static void Main(string[] args)   { #region 委托演示   /*   TestDel t = new TestDel();   #region 簡(jiǎn)單實(shí)例化委托與調(diào)用委托   Console.WriteLine("-----以下是簡(jiǎn)單使用委托演示--------");   //t.MyMethod();   ///實(shí)例化委托,用一個(gè)方法來進(jìn)行實(shí)例化   ///該方法簽名要與委托簽名一致   MyDel del = new MyDel(t.MyMethod);   ///調(diào)用委托   del();   //C#2.0后可以這種方式實(shí)例化委托   MyDel del4 = t.MyMethod; del4();   //用靜態(tài)方法進(jìn)行實(shí)例化   del4 = TestDel.MyStaticMethod; del4();   //以下代碼效果相同   //MyDel2 del2 = new MyDel2(t.MyMethod);   //del2(10, 20); MyDel2 del2 = t.MyMethod; del2(10, 20);   //MyDel3 del3 = new MyDel3(t.MyMethod);   //Console.WriteLine(del3("abc"));   #endregion   #region 匿名方法實(shí)例化委托 Console.WriteLine("-----以下是匿名方法演示--------");   //用匿名方法實(shí)例化委托   ProcessString p = delegate(string inputString) {   return inputString.ToUpper(); };   //通過委托調(diào)用匿名方法   Console.WriteLine(p("aaaa"));   #endregion   #region 委托多播演示   Console.WriteLine("-----以下是委托多播演示--------"); MyDel mydel1 = t.MyMethod; MyDel mydel2 = t.MyMethod2; MyDel mydel3 = TestDel.MyMethod3; MyDel allMyDel = mydel1 + mydel2 + mydel3;   allMyDel();   allMyDel -= mydel3;   allMyDel();   #endregion   #region 委托作為參數(shù)演示   Console.WriteLine("-------以下是委托作為參數(shù)演示------"); MyDel3 paramMyDel3 = t.MyMethod; TestDel.MyParamMethod("aaa", paramMyDel3);   #endregion #region 委托作為返回值 Console.WriteLine("---以下是委托作為返回值演示------");   ///returnMyDel指向t.MyReturnMethod()的返回值   MyDel3 returnMyDel = t.MyReturnMethod();   ///returnMyDel指向t.MyMethod   //MyDel3 returnMyDel = t.MyMethod;   Console.WriteLine(returnMyDel("sssssssssssss")); #endregion   */   #endregion   //MyReturnDelegateTest my = new MyReturnDelegateTest();   //my.MyTest();   MyParamDelegateTest myParam = new MyParamDelegateTest(); myParam.AddBooks();   myParam.MyTest();   } }  public class TestDel {   #region 普通方法   public static void MyStaticMethod()   {   Console.WriteLine("My Static Method");   }   public void MyMethod()   {   Console.WriteLine("MyMethod");   }   public void MyMethod2()   {   Console.WriteLine("My Method 22222222222"); }   public static void MyMethod3()   {   Console.WriteLine("My Method 3333333333333");   }   public void MyMethod(int num1, int num2) { Console.WriteLine(num1+num2);   }   public string MyMethod(string s)   { return s.ToUpper(); }   #endregion   /// <summary>   /// 委托作為方法參數(shù)   /// </summary>   /// <param name="s"></param>   /// <param name="del3"></param>   public static void MyParamMethod(string s, MyDel3 del3) { Console.WriteLine(del3(s)); }   /// <summary>   /// 委托作為返回值   /// </summary>   /// <param name="s"></param>   /// <returns></returns> public MyDel3 MyReturnMethod() {   ///返回符合委托規(guī)范的方法   return MyMethod;   }   }

通過例子,我們可以知道,使用委托可以將多個(gè)方法綁定到同一個(gè)委托變量,當(dāng)調(diào)用此變量時(shí)(這里用“調(diào)用”這個(gè)詞,是因?yàn)榇俗兞看硪粋€(gè)方法),可以依次調(diào)用所有綁定的方法。

到此,相信大家對(duì)“C#委托的基礎(chǔ)概念和特點(diǎn)”有了更深的了解,不妨來實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

分享名稱:C#委托的基礎(chǔ)概念和特點(diǎn)
鏈接URL:http://muchs.cn/article40/ijdcho.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App設(shè)計(jì)外貿(mào)網(wǎng)站建設(shè)、網(wǎng)站收錄網(wǎng)站設(shè)計(jì)公司、App開發(fā)軟件開發(fā)

廣告

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

手機(jī)網(wǎng)站建設(shè)