C委托与事件

发布 2019-07-18 01:02:15 阅读 8328

c# 委托与事件。

一个例子:实现一个定时器,到某个时间后,通知tom去抓老鼠,通知jerry躲起来。

code:不使用委托的实现方式,c#

/声明一个猫的类。

class cat

private string _name;

public cat(string name)

public string getname()

//抓老鼠。

internal void catchingmice()

c#/声明一个老鼠的类。

class mouse

private string _name;

public mouse(string name)

public string getname()

//逃跑。internal void flee()

c#/声明游戏定时器。

class gametimer

private int _time;

private cat _tom;

private mouse _jerry;

public gametimer(){

public gametimer(cat cat, mouse mouse)

//时光飞逝……

public void runtime()

c#class program

static void main(string args)

这种实现存在很多弊端;

1. gametimer类只是一个游戏定时器,不应该由它负责调用具体的游戏事件。这导致其与具体的游戏细节高度耦合。

2. 不利于扩展,如果需求变化,变成一群猫和一群老鼠的游戏了……

使用委托实现:

c#/声明委托。

public delegate void gamestartdelegate();

在gametimer类中定义一个委托,c#

public gamestartdelegate startgame;

更改gametimer类的runtime()方法,c#

/时光飞逝……

public void runtime()

if (_time >=10)

_time +=1;

runtime();

c#class program

static void main(string args)

以上例子是委托的基本使用,那委托到底是什么那?我们通过reflector调试查看委托的类型。

通过上图我们可以看到,gamestartdelegate是一个类,它继承至multicastdelegate。

委托是一个类,它定义了方法的类型,使得可以将方法当作另一个方法的参数来进行传递,这种将方法动态地赋给参数的做法,可以避免在程序中大量使用if-else(switch)语句,同时使得程序具有更好的可扩展性。即将方法作为方法的参数。

c#static void main(string args)

如上**所示,可以使用“=”为委托赋值或覆盖;使用“+=为委托添加绑定;“-取消绑定。

委托作为方法的参数使用,下面是一个作为函数参数的例子。

重构runtime()方法,c#

public void runtime(gamestartdelegate startgame)

if (_time >=10)

_time +=1;

runtime();

修改progam类:

c#class program

func和action是两个泛型委托,这两个自带的委托在很多时候可以省去我们自定义委托的工作。

委托与事件

事件与委托趣谈。事件与委托似乎很难以理解,这是因为它们的使用方式与常用的编码有很大的差别,例如通常编写的都是同步 调用一个类型的方法,会即刻出现方法执行的结果,这是符合逻辑的。但在某些情况中,同步 未必满足需求,拿公共汽车来打个比方,如果交通管制中心希望每一辆公车到达一个站点时都发送给自己一个信号以...

委托租房委托书

五 受托人代表委托人签署的一切有关文件,委托人均予以承认,由此在法律上产生的责任一概由委托人承担 本委托为不可撤消之委托。本委托无论委托人发生婚变或其他意外等等情况,均长期有效 本委托经委托人签字并按手印后生效 本委托自上述所有事项全部办理完毕后自行失效。委托人 委托日期 年月日 附件 1 委托人房...

“虐童事件”反思

虐童事件 反思。10月24日,浙江温岭一所民办幼儿园的90后女教师颜艳红虐童事件引起争议。虽然事后颜艳红已被辞退,并被公关机关刑拘,且其所在的幼儿园园长已被免职。但该女教师的行为令我们不少家长开始质疑把孩子交到幼儿园,到底能不能放心?花儿怒放需共同努力。教师被称为人类灵魂的工程师,是天底下最神圣的职...

颜艳红事件心得

今天会议室中我们看了关于颜艳红的事件一张张触目惊心的 展现在我们面前,孩子那痛苦的表情无助的表情我真的想问问这些难道你都没有看到吗?孩子是那么的天真那么的可爱,一张张笑脸如此的美丽你怎忍心呢?作为一位老师你就没有一点职业道德吗?但是你好像也是无证的,但至少你进入了这个行业你就该有基本的道理礼仪和约束...

委托送达函

35 委托送达函样式。人民法院。委托送达函。执 字第 号。人民法院 我院执行的 写明当事人姓名或名称 案由 一案,现委托你院送达有关执行法律文书。随函寄去 写明生效法律文书的制作机关 日期 字号和名称 份,送达回证 件,请在收到后 日内代为向 送达,并将送达回证及时寄回我院。附执 字第 号 执行法律...

工程造价咨询委托书委托书

甲方 委托人 佛山市工程造价咨询 乙方 被委托人 在自愿 诚信 公平的前提下,经过甲乙双方协商一致,委托人出具本委托书。本委托书约定如下 1 甲方委托乙方提供银畔丽苑 新松20号地商品房 工程造价咨询服务,主要服务内容是编制工程预结算,负责与建设单位和施工单位核对相关工程量,解释套价依据等 2 由于...

快递突发事件应急预案

一 目的 对突发性事件立即启动应急预案响应,减少损失,消除负面影响,尽快恢复正常生产。二 适用范围 公司各部门及全体员工。三 应急预案等级 1 特级预案 特别严重 因不可抗拒的自然灾害,重大道路交通事故,经营场所火灾 员工工伤 食物中毒 群体事件 恐怖事件,发现寄送影响 的快件,与外国友人发生摩擦等...

突发事件总体应急预案

关于下发 金马油田开发公司突发事件应急预案 的。通知。各区 所,大队 站 机关各科室 直属部门 为了贯彻 中国石油辽河油田公司突发事件总体应急预案 中华人民共和国突发事件应对法 中华人民共和国安全生产法 及其它法律 法规及有关文件的要求,保护单位员工的生命安全,减少单位财产损失,使事故发生后能快速 ...