事件委托在什么情况下使用

事件委托怎么写

1.什么是事件和委托

委托和事件在.NET Framework中的应用非常广泛,然而,较好地理解委托和事件对很多接触C#时间不长的人来说并不容易。

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

使用委托可以将多个方法绑定到同一个委托变量,当调用此变量时(这里用“调用”这个词,是因为此变量代表一个方法),可以依次调用所有绑定的方法。

事件就是一个特殊的委托,委托和事件就类似于字段和属性的关系,事件是对委托做了一个封装。

参考:/view/1935199.htm

2.什么是事件和委托

委托实质上是一个类,是对方法的封装,委托内部有三个重要成员:目标,方法,前一个委托。

普通代码里这样调用方法: aBird.Fly(); 封装到委托里,aBird 就是目标,Fly 就是方法。委托可以组成链,“前一个委托”用于支持这种链式结构。

MethodInvoker mi = new MethodInvoker(aBird.Fly); mi(); 这段和上面的 aBird.Fly 是一个效果,但不是直接调用。可以将 mi 传递到其他地方,再进行调用。

委托在方法和调用方之间建立了间接性。 事件是基于委托的通信机制。

如果一个对象的状态改变了,我们可能希望将这种改变通知给外界。从实现角度看,“通知”其实就是调用接收方的方法。

困境在于,我们不知道谁对这些改变有兴趣,有多少人对这些改变有兴趣,所以,我们无法直接调用方法。.net中有两个办法解决这个问题,接口和委托。

这两个的含义都是“约定”,目的则是“分离”,换句话说,就是:商量好了,分头行动。接口是对类成员的约定,委托是对参数和返回值的约定。

对于简单的通知,接口有些麻烦,委托更好一些,所以,我们将一个委托加到类中,让它保存应该调用的方法。但光秃秃的一个字段有点难看,好像没穿衣服一样。

为了让代码更好看,.net 引入了事件的概念。事件本质上是一个方法,事件提供 add, remove,将方法挂到这个委托中,或从此委托中移除。

像这样: button1.Click += new EventHandler(button1_Click), 订阅事件, button1.Click -= new EventHandler(button1_Click), 退阅事件, 如果A订阅了B的事件,那么它们之间的引用关系是这样:B引用委托,委托引用A。这就是说,在退阅事件之前,A不会被当作垃圾回收,因为B包含对它的引用。

因此,委托和事件的区别是:委托与类,结构,接口,枚举是一类,而事件属类成员,和属性,方法,字段是一类。不过这种区分意义不大,应付考官而已。

写代码的时候,谁会想这么多。

3.委托书怎么写

授权委托书

委托人:姓名、性别、出生年月、民族、工作单位、职业、住址。 (委托人为单位的,写明单位名称)

被委托人:姓名、性别、出生年月、民族、工作单位、职业、住址。

(被委托人是律师的,只写姓名和所在律师事务所名称)

委托人因XXXX(写明事件性质及对方当事人)一事,委托XXX为XX的代理人,代理权限如下:

(委托刑事案件的辩护人,只写“为被告人XXX(姓名)XXX一案第X审进行辩护”)

(委托经济、民事、行政等案件代理人的,须写明代理权限,特别授权的,应写明授权的具体范围,如

代为起诉、提出反诉、进行和解、撤诉、上诉、签收法律文书等)

委托人:(签名或盖章) 被委托人:(签名或盖章)

4.请问前辈们怎么学习委托和事件呢

委托的注意事项

在C#中,所有的委托都是从System.MulticastDelegate类派生的。

委托隐含具有sealed属性,即不能用来派生新的类型。

委托最大的作用就是为类的事件绑定事件处理程序。在通过委托调用函数前,必须先检查委托是否为空(null),若非空,才能调用函数。

在委托实例中可以封装静态的方法也可以封装实例方法。

在创建委托实例时,需要传递将要映射的方法或其他委托实例以指明委托将要封装的函数原型(.NET中称为方法签名:signature)。注意,如果映射的是静态方法,传递的参数应该是类名.方法名,如果映射的是实例方法,传递的参数应该是实例名.方法名。只有当两个委托实例所映射的方法以及该方法所属的对象都相同时,才认为它们是想等的(从函数地址考虑)。

5.委托与事件

public CoreTypes.NodeCallBack NCallBack;

其实就是一个字段,这个字段类型是NodeCallBack,字段的名字叫NCallBack

如果你这样声明

public event CoreTypes.NodeCallBack NCallBack;

就会定义一个事件,事件也是属于这个委托类型的,但是他与这个委托类型的字段是有区别的,这个事件在类外面访问的时候,你是不能引发,或者说主动执行的,而声明为一个public字段的话,在类的外面就可以随意操作了

最后一句是给这个字段中包含的委托添加一个匿名方法

回答补充:

二楼说的没错,我再补充一下

使用event声明的是一个事件,实际上在编译的时候会生成两个方法(add_XXX和remove_XXX)和一个字段,你在类内部使用+= -=其实编译的时候调用的是两个方法,而取出事件中包含的委托则编译时直接访问字段

但是在类的外面,你只能使用+= -=访问add和remove方法,这样就防止在类的外部直接修改委托中注册的处理器,保护类不被恶意破坏,而也仅能在内部引发一个事件

事件委托怎么写

转载请注明出处育才学习网 » 事件委托在什么情况下使用

知识

罗梅芬用日文怎么写(罗钰潇日语怎么写)

阅读(21450)

本文主要为您介绍罗梅芬用日文怎么写,内容包括伊蕾娜日语怎么写,王雪菲用日文怎么说,张佳怡在日语中怎么写啊怎么读啊。罗 ら ラ ra钰 ぎょく ギョク gyoku潇 しょう シヨウ shou第一列:日语汉字,写法同汉字,都要用繁体,这三个都挺难写的,看

知识

邓先生的英文怎么写(1~40的英文怎么说)

阅读(10472)

本文主要为您介绍邓先生的英文怎么写,内容包括“邓先生”用英语怎么写,1~40的英文怎么说,漂亮英文beautiful缩写怎么写。1 one 2 two 3 three 4 four 5 five 6 six 7 seven 8 eight 8 nine 10 te

知识

一个人布满皱纹怎么写(描写人物皱纹的句子)

阅读(9554)

本文主要为您介绍一个人布满皱纹怎么写,内容包括描写人物皱纹的句子,描写人物皱纹的句子,皱纹怎么描写。、老人脸上布满了皱纹,那一条条曲折不均的像是墙上斑驳的印迹,爬满了面容,留下了岁月的痕迹。2、外祖父是一位年过六旬的白发老人。在他

知识

登录接口怎么写(php登录的接口怎么写)

阅读(7785)

本文主要为您介绍登录接口怎么写,内容包括php登录的接口怎么写,网页登陆接口怎么做,网站登录接口程序怎么做。PHP 接口 接口 使用接口(interface),你可以指定某个类必须实现哪些方法,但不需要定义这些方法的具体内容。我们可以通过int

知识

档案奖惩情况怎么写(奖惩情况怎么写)

阅读(9628)

本文主要为您介绍档案奖惩情况怎么写,内容包括奖惩情况怎么写,个人简历及奖惩情况怎么填写,个人简历里面奖惩情况怎么写。在简历里的“奖励”部分,列出与你所获得的并与你的求职目标相关的荣誉、奖励和奖金。你既可以按时间顺序排列,也可以按

知识

头孢克肟拼音怎么写(头孢克肟的肟念什么)

阅读(8028)

本文主要为您介绍头孢克肟拼音怎么写,内容包括头孢克肟片全名拼音,头孢克肟片全名拼音,头孢克肟的肟念什么。肟[wò] :是含有羰基的醛、酮类化合物与羟胺作用而生成的有机化合物,可以参与许多有机化学反应,例如经典的Beckmann重排就是肟为底

知识

一库搜用日语怎么写(日语一库是什么意思)

阅读(8033)

本文主要为您介绍一库搜用日语怎么写,内容包括日语大神来,看动漫里的主人公说一句:恰,一库搜这是什么意思,一库一库;一搜库这两个日语是什么意思怎么写,看片都有“一库”(日语)是什么意。一库的意思就是“出发,出去”的意思。日语「行く」的音译

知识

外租无人机广告怎么写(植保无人机广告语)

阅读(7034)

本文主要为您介绍外租无人机广告怎么写,内容包括求一个无人机创意广告词谢谢巨友们了,求一关于无人机的广告标语,求一关于无人机的广告标语我们公司是做无人机的,新成立的公司,求。DJI大疆创新研发的的MG-1农业植保机专为农村作业环境设计,

知识

河南话que怎么写(河南话的nenna怎么写)

阅读(6555)

本文主要为您介绍河南话que怎么写,内容包括que怎么写,河南话的nenna怎么写,que怎么写。尿一壶(niào yī hú)关系密切,观点一致。例:“他俩今天尿一壶啦。”●尿(niào)⑴、从尿道排泄的液体。⑵、排泄小便。⑶、不放

知识

国学经文的论文怎么写(国学征文该怎么写)

阅读(7148)

本文主要为您介绍国学经文的论文怎么写,内容包括国学征文该怎么写,弟子规的400论文,关于国学经典的征文怎么写。“子曰:“温故而知新,可以为师”……小时,总是觉得国学就是没用的,古人写的话,我们还需要背,每次老师教给我们时,我总是会让思想开一

知识

化学实验总结怎么写(化学实验报告小结怎么写)

阅读(5421)

本文主要为您介绍化学实验总结怎么写,内容包括化学实验总结怎么写,化学实验报告小结怎么写,化学实验小结怎么写。化学实验报告的书写: 一般情况下化学实验报告是根据实验步骤和顺序从七方面展开来写的: 1.实验目的:即本次实验所要达到的目标或

知识

蝴蝶豌豆拼音怎么写(豌豆的拼音是什么)

阅读(5852)

本文主要为您介绍蝴蝶豌豆拼音怎么写,内容包括蝴蝶怎么拼音的,豌豆的拼音是什么,蝴蝶的拼音是什么。豌豆的拼音是[wān dòu]。豌豆是豆科一年生攀援草本,高0.5-2米。全株绿色,光滑无毛,被粉霜。叶具小叶4-6片,托叶心形,下缘具

知识

海绵宝宝用英文怎么说(海绵宝宝用英文怎么说)

阅读(6541)

本文主要为您介绍海绵宝宝用英文怎么说,内容包括海绵宝宝用英语怎么说,海绵宝宝用英文怎么说,海绵宝宝英文名是什么。1. SPONGEBOB SQUAREPANTS 近期很夯的一步卡通影片《海绵宝宝》(SpongeBob SquarePants)是一系

知识

茶盏怎么用(茶盏在茶道中干嘛用)

阅读(5453)

本文主要为您介绍茶盏怎么用,内容包括茶盏怎么用我要写一篇200字左右的茶盏的使用说明,求指教,茶盏在茶道中干嘛用,问一下斗笠盏如何使用现在是不是很少有人使用它,它的意义。苏东坡的名句"从来佳茗似佳人",典型地代表了唐宋及以后的文人墨客,

知识

thinkpad小红点怎么用(怎么学习使用thinkpad小红点)

阅读(7621)

本文主要为您介绍thinkpad小红点怎么用,内容包括怎么学习使用thinkpad小红点,thinkpad小红点怎么用,求教:THINKPAD的小红点使用方法。Thinkpad 小红点最高效的使用方法为:左手拇指按左键,无操作时在左键待命2、右手拇指按右键,同时兼按空格键及