码迷,mamicode.com
首页 > Windows程序 > 详细

理解C#中的事件

时间:2017-12-14 03:17:32      阅读:225      评论:0      收藏:0      [点我收藏+]

标签:文件   接下来   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#中的事件

标签:文件   接下来   blog   like   链接   c#   控件实现   技术分享   java   

原文地址:http://www.cnblogs.com/paobuke/p/8035549.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!