標籤:[] 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#中委託的進一步理解