C#中委託的進一步理解

來源:互聯網
上載者:User

標籤:[]   ora   parent   class   margin   com   sys   text   pad   

文章介紹了委託的基本知識,接下來就進一步研究一下委託。


委託類型

其實,剛開始覺得委託類型是一個比較難理解的概念,怎麼也不覺得下面的”AssembleIphoneHandler”是一個類型。


代碼如下:


public delegate void AssembleIphoneHandler();

按照正常的情況,如果我們要建立一個委託類型應該是:


代碼如下:


public class AssembleIphoneHandler : System.MulticastDelegate

{

}

但是,這種寫法是編譯不過的,會提示不能從”System.MulticastDelegate”派生子類。

其實,這裡是編譯器為我們做了一個轉換,當我們使用delegate關鍵字聲明一個委託類型的時候,編譯器就會按照上面程式碼片段中的方式為我們建立一個委託類型。

知道了這些東西,對於委託類型的理解就比較容易了,通過delegate聲明的委託類型就是一個從”System.MulticastDelegate”派生出來的子類。


建立委託鏈

下面我們通過一個例子來看看委託鏈的建立,以及調用列表的變化,基於前面一篇文章中的例子進行一些修改。


代碼如下:


class Program

{

static void Main(string[] args)

{

Apple apple = new Apple();

Foxconn foxconn = new Foxconn();

Apple.AssembleIphoneHandler d1, d2, d3, d4 = null;

d1 = new Apple.AssembleIphoneHandler(foxconn.AssembleIphone);

d2 = new Apple.AssembleIphoneHandler(foxconn.PackIphone);

d3 = new Apple.AssembleIphoneHandler(foxconn.ShipIphone);

d4 += d1;

d4 += d2;

d4 += d3;

d4();

Console.Read();

}

}

除聲明外, 跑步客文章均為原創,轉載請以連結形式標明本文地址
  C#中委託的進一步理解

本文地址:  http://www.paobuke.com/develop/c-develop/pbk23130.html






相關內容C# 擷取IP及判斷IP是否在區間C# this1??ü×?μ?????ó?·¨C#求數組中元素全排列的方法C#產生DLL檔案的方法小結
C#、ASP.NET通用工具類IsWhat?(可以判斷數字、身份證、資料類型等等)c#編寫的番茄鐘倒計時器代碼C#中實現在32位、64位系統下自動切換不同的SQLite dll檔案C#實現自訂定時組件的方法

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.