理解C#中的事件

2021-07-25 03:03

阅读:724

前面文章中介绍了委托相关的概念,委托实例保存这一个或一组操作,程序中将在某个特定的时刻通过委托实例使用这些操作。

如果做过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控件实现省与市的联动效果的方法


评论


亲,登录后才可以留言!