.net C#委託的個人見解

來源:互聯網
上載者:User

今天突然想到對委託的理解大致都忘了 就從新溫習了一下 希望能幫到大家

首先看一下MSDN對委託的解釋

               委託是一種定義方法簽名的類型。 當執行個體化委託時,您可以將其執行個體與任何具有相容簽名的方法相關聯。 您可以通過委託執行個體調用方法。

什麼是委託
  首先要知道什麼是委託,用最通俗易懂的話來講,你就可以把委託看成是用來執行方法(函數)的一個東西。

 

如何使用委託
  在使用委託的時候,你可以像對待一個類一樣對待它。即先聲明,再執行個體化。只是有點不同,類在執行個體化之後叫對象或執行個體,但委託在執行個體化後仍叫委託。

下面是我對於委託的理解代碼

 

 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5  6 namespace 委託的應用 7 { 8     public  delegate void wenhou(string name);//定義一個委託 wenhou 9     class Program10     {11         private static void Englishwenhou(string name)//定義一個英文的問候  輸出goodmorning + 名字12         {13             Console.WriteLine("GoodMorning{0}", name);14         }15         private static void Chineswenhou(string name)//定義一個中文的問候  輸出 早上好 +名字16         {17             Console.WriteLine("早上好{0}", name);18         }19 20         private static void delegatewenhou(string name, wenhou wh)//定義一個委託wenhou類型的變數 ,這個委託會根據方法名字的來調用方法 並且把參數傳入相應的方法21         {22             wh(name);23         }24         static void Main(string[] args)25         {26             /*    第一種使用委託的方法(此方法就是通過參數的形式來給委託傳值)27              28              29                 delegatewenhou("曹俊", Englishwenhou);                     //設定為中文問候的委託30              31                  Console.WriteLine("---------------------------------\n");32              33                 delegatewenhou("jun.cao", Chineswenhou);                    //設定為英文問候的委託34              35                 Console.ReadKey();                                                  //擷取輸入的按鍵 -- 再次用於不立即關閉調試視窗36              */37 38             /*39              輸入:40                    GoodMorning jun.cao41                    ---------------------------------42              43                    早上好曹俊44              */45 46             //第二種使用委託的方法(直接給委託傳值)47 48 49 50             wenhou wh = new wenhou(Englishwenhou);//向委託中添加英文問候的方法   ^-^ 是不是和執行個體化對象 和執行個體化類一樣? 實際上委託在編譯器執行的時候就是類 只不過委託是型別安全的。。。51 52             wh("jun.cao");                  //通過委託調用的 英文問候53             Console.WriteLine("---------------------------------\n");54             wh += new wenhou(Chineswenhou); //向委託中添加中文問候的方法55 56             wh("曹俊");                 // 調用委託 ,委託會依次 調用委託中綁定的方法57             Console.WriteLine("---------------------------------\n");58 59             wh -= new wenhou(Englishwenhou);  //移除委託中的方法。   ^-^ 可以添加委託方法 就可以去除掉委託方法咯  +=  是向委託中添加方法  -= 就是移除委託中已存在的方法60 61             wh("曹俊");62 63             Console.ReadKey();64             /*65              輸入:66                         GoodMorningjun.cao67                         ---------------------------------68 69                         GoodMorning曹俊70                         早上好曹俊71                         ---------------------------------72 73                         早上好曹俊74 75 76              */77         }78     }79 }

 

 

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.