理解C#中的事件

來源:互聯網
上載者:User

標籤:檔案   接下來   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#中的事件

聯繫我們

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