C#中的委託

來源:互聯網
上載者:User

標籤:assets   svg   編程   sharp   toc   bar   lin   mic   clip   

第一次在程式設計語言中接觸委託,感覺很是生疏。敲了幾個例子自後,發現其實在物件導向語言中的委託和我們現實生活中是一樣的。比如說,小紅需要去銀行取錢,這裡取錢就是小紅這一個對象的方法。同樣如果是小明,他也可以有取錢這一個方法。如果小紅由於一些事情讓小明替她去取錢,在這裡就是委託了。也就是小明以小紅的名義去取錢,執行同樣的方法。

       在C#中,委託派生於基類System.Delegate,不過委託的定義和常規的定義方法不太一樣,委託通過關鍵字delegate來定義:

       public delegate void myDelegate(int x,int y)

       上面的代碼定義了一個新委託,它可以封裝任何返回為int,帶有兩個int參數的方法,任何一個方法無論是執行個體方法還是靜態方法,只要他們的簽名(參數類型在一個方法中的順序)和定義的委託是一樣的,都可以把他們封裝到委託中去。

       下面我們來看一個具體的例子吧:

       為了方便理解,我在這裡就聲明具體的類了。

      

[csharp] view plain copy  
  1. <span style="font-family:Microsoft YaHei;font-size:18px;">    public delegate void GetMoney(string name);//定義委託  
  2.     class Example2  
  3.     {  
  4.         public static void getCCBmoney(string name)  
  5.         {  
  6.             Console.WriteLine("去建行取錢!");  
  7.         }  
  8.         public static void getABCmoney(string name)  
  9.         {  
  10.             Console.WriteLine("去農行取錢!");  
  11.         }  
  12.         static void Main(string[] agrs)  
  13.         {  
  14.             GetMoney gm;  
  15.             gm = getABCmoney;//委託執行個體化,或者可以寫成GetMoney gm=new GetMoney(getABCmoney)  
  16.             gm("小紅");  
  17.         }  
  18.     }</span>  

        輸出結果如下:

        
        從上面的例子中我們可以總結出:委託是一個類,它定義了方法的類型,可以把方法當作參數來進行傳遞,這種動態賦給參數的做法,可以大大提高程式的擴充性。

C#中的委託

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.