標籤:檔案 接下來 blog like 連結 c# 控制項實現 技術分享 java
前面文章中介紹了委託相關的概念,委託執行個體儲存這一個或一組操作,程式中將在某個特定的時刻通過委託執行個體使用這些操作。
如果做過GUI程式開發,可能對上面的描述會比較熟悉。在GUI程式中,單擊一個button會觸發一個click事件,然後會執行一系列的操作,這一系列的操作就被存放在一個委託執行個體中。
接下來我們就看看事件。
使用委託中的問題
回到前面文章中蘋果和富士康的例子,蘋果將iphone的組裝、封裝和運輸的工作全部委託給了富士康。
根據上面的描述,我們修改了一下代碼,在Apple這個類中加入一個訂單屬性,蘋果只要接到新的訂單,就發送一個通知給富士康,然後富士康就會執行一系列的操作了(組裝、封裝和運輸)。
在主程式中,蘋果將iphone的組裝、封裝和運輸工作委託給了富士康,然後蘋果每次收到訂單,就會通過委託執行個體”VerdorToAssembleIphone”讓富士康去執行一系列操作。
代碼如下:
class Apple
{
//聲明委託類型
public delegate void AssembleIphoneHandler(int num);
public AssembleIphoneHandler VerdorToAssembleIphone;
public void DesignIphone()
{
Console.WriteLine(“Design Iphone By Apple”);
}
private int orderNum;
public int OrderNum
{
get { return this.orderNum; }
set
{
this.orderNum = value;
if (VerdorToAssembleIphone != null)
{
VerdorToAssembleIphone(this.orderNum);
}
}
}
}
class Foxconn
{
//與委託類型簽名相同的方法
public void AssembleIphone(int num)
{
Console.WriteLine(“Assemble {0} Iphone By Foxconn”, num);
}
public void PackIphone(int num)
{
Console.WriteLine(“Pack {0} Ipnone By Foxconn”, num);
}
public void ShipIphone(int num)
{
Console.WriteLine(“Ship {0} Iphone By Foxconn”, num);
}
}
class Program
{
static void Main(string[] args)
{
Apple apple = new Apple();
Foxconn foxconn = new Foxconn();
apple.VerdorToAssembleIphone = new Apple.AssembleIphoneHandler(foxconn.AssembleIphone);
apple.VerdorToAssembleIphone += new Apple.AssembleIphoneHandler(foxconn.PackIphone);
apple.VerdorToAssembleIphone += new Apple.AssembleIphoneHandler(foxconn.ShipIphone);
apple.OrderNum = 100;
Console.Read();
}
}
除聲明外,
跑步客文章均為原創,轉載請以連結形式標明本文地址
理解C#中的事件
本文地址: http://www.paobuke.com/develop/c-develop/pbk23129.html
相關內容C#中的==運算子詳解三種C#實現數組反轉方式輕鬆學習C#的裝箱與拆箱C#遍曆檔案夾後上傳檔案夾中所有檔案錯誤案例分析
同步調用和非同步呼叫WebService淺析JAVA中過濾器、監聽器、攔截器的區別C#從畫刷建立畫筆的方法C#用ComboBox控制項實現省與市的聯動效果的方法
理解C#中的事件