我也谈委托与事件

  虽然在博客园里面已经有很多关于C#委托和事件的文章,但是为了自己在学习的过程中,加深对委托的理解,我还是决定写一下自己的心得体会。以备他日在回来复习。委托(delegate)是一个类,但是这个类在声明的时候跟普通的类有些不同。不带class 关键字等。如下:

ContractedBlock.gifExpandedBlockStart.gifView Code
static void Main(string[] args)
{
Test();
Console.ReadKey();
}
static void SayHello(string name)
{
Console.WriteLine(
"Nice to me you "+name);
}
static void SayHelloToo(string name)
{
Console.WriteLine(
"Nice to me you too!"+name);
}
public delegate void DoSomething(string name);//声明一个委托类
static event DoSomething MyEvent; //声明一个DoSomething类型的事件。

public static void Test()
{
DoSomething ds1
= new DoSomething(SayHello); //声明一个DoSomething委托类型的对象
DoSomething ds2
= new DoSomething(SayHelloToo);
ds1(
"杨凤辉"); //委托对象,相当于对应函数的指针
MyEvent
+= ds1; // 将两个委托对象绑定到事件对象上。
MyEvent += ds2; // -=为取消绑定。
MyEvent("YFH");  //此行为触发事件,事件触发后会通知绑定的方法,并执行。
}

新建一个委托对象,就相当于该对象是参数(方法)的指针应用,一般事件,都是针对于某一具体的委托的事件。一个事件可以绑定多个方法,事件触发后,绑定的方法会依次被执行。 在其他牛人的博客内,有一个很好的举例。在Windows程序设计中,在设计器中双击一个按钮button1.会自动生成该button的单击响应函数:

   private void button1_Click(object sender, EventArgs e)
        {

        }

    你会发现几乎所有方法都是两个参数的:object sender, EventArgs e。微软为这些方法定义了一个委托private System.EventHandler(object sender,EventArgs e)。我们查看:Designer.cs里面button1对象的属性。有一个click的事件属性,绑定了button1_Click方法。

this.button1.Click += new System.EventHandler(this.button1_Click) 。

有一点我不明白的是:事件与委托对象有关系吗,在声明事件的时候,也是关于某个委托的事件,而委托对象,也是关于该委托的对象。难道那么都是该委托类的对象?

转载于:https://www.cnblogs.com/YangFengHui/archive/2011/04/17/2018929.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/378503.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

php错误拦截机制,php拦截异常怎么写-PHP问题

php拦截异常可以通过PHP的错误、异常机制及其内建数set_exception_handler、set_error_handler、register_shutdown_function 来写。首先我们定义错误拦截类,该类用于将错误、异常拦截下来,用我们自己定义的处理方式进行处理,该类放在文件名为…

智能车复工日记【4】:关于图像的上下位机的调整问题总结

系列文章 【智能车Code review】—曲率计算、最小二乘法拟合 【智能车Code review】——坡道图像与控制处理 【智能车Code review】——拐点的寻找 【智能车Code review】——小S与中S道路判断 【智能车Code review】——环岛的判定与补线操作 智能车复工日记【1】——菜单索引…

设计合理的实验方案来研究阳离子改性棉织物与未改性棉的染色动力学性能

染色动力学性能研究染色的什么问题?设计合理的实验方案来研究阳离子改性棉织物与未改性棉的染色动力学性能?并指出如何计算反映染色动力学的主要参数? 标准答案: 染色动力学研究染色速率问题。 为了研究阳离子改性棉纤维及未改性棉纤维对活性染料染色动力学性能,首先要测…

Java ArrayList toArray()方法及示例

ArrayList类的toArray()方法 (ArrayList Class toArray() method) Syntax: 句法: public Object[] toArray();public T[] toArray(T[] elements);toArray() method is available in java.util package. toArray()方法在java.util包中可用。 toArray() method is us…

小练习:新闻网站、SNS网站图片播放器jQuery版

新闻网站和sns网站常见的图片浏览器。直接看效果吧,效果预览:http://u.vps168.com.cn/cos2004/photoView/, ie7、ie8、ff预览正常,ie6和chrome预览有一点小问题,研究中 作者:绿色花园 出处:htt…

SQL SERVER的锁机制(四)——概述(各种事务隔离级别发生的影响)

SQL SERVER的锁机制(一)——概述(锁的种类与范围) SQL SERVER的锁机制(二)——概述(锁的兼容性与可以锁定的资源) 本文上接SQL SERVER的锁机制(三)——概述&a…

如何测定拼色染液中,各染料在不同染色时间时,染液中残留染料量及织物上吸附上染的染料量?

如何测定拼色染液中,各染料在不同染色时间时,染液中残留染料量及织物上吸附上染的染料量? 标准答案: 通常依据各染料对特定波长光的吸光度具有加和性;吸光度值符合朗伯比尔定律,吸光度与浓度成正比;吸光度值分光光度计可以读出;通过联立方程,可以求出拼色各染料在染液中…

oracle云数据库 免费的吗,使用免费的Oracle云服务-创建ATP数据库

前面我们讲了在Oracle的云主机安装数据库,虽然现在安装数据库已经很简单了,但是真正要在生产环境使用,还是需要进行很多配置和优化的,这通常需要专业的人员。而ATP(自治事务性数据库服务)正是Oracle云提供的非常强大的数据库云服务…

golang判断结构体为空_如何在Golang中检查结构是否为空?

golang判断结构体为空The size of an empty structure is zero in Golang. Here, empty structure means, there is no field in the structure. 在Golang中, 空结构的大小为零。 在此, 空结构表示该结构中没有字段。 Eg: 例如: Type struc…

智能车复工日记【5】:起跑线的识别与车库入库

博主联系方式: QQ:1540984562 QQ交流群:892023501 群里会有往届的smarters和电赛选手,群里也会不时分享一些有用的资料,有问题可以在群里多问问。 系列文章 【智能车Code review】—曲率计算、最小二乘法拟合 【智能车Code review】——坡道图像与控制处理 【智能车Code re…

文本框只允许输入数字.net/javascript

<input type"text" name"test" onKeyUp"test1.value(this.valuethis.value.replace(/\D/g,).substring(0,6)).substring(0,3)" > <br /><input name"test1" type"text" > 用Up和Down有区别 只能输入数字、…

jquery全选,jquery全不选,jquery反选

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns"http://www.w3.org/1999/xhtml"> <head> <title>全选&#xff0c;不…

obj[]与obj._Ruby中带有示例的Array.rassoc(obj)方法

obj[]与obj.Array.rassoc(obj)方法 (Array.rassoc(obj) Method) In this article, we will study about Array.rassoc(obj) method. You all must be thinking the method must be doing something which is related to the insertion of a certain element. It is not as simp…

oracle平均活动会话数,Oracle11g r2的活动会话数问题解决

如果你在Oracle11g r2的活动会话数的实际操作中&#xff0c;你对Oracle11g r2的活动会话数有不解之处时&#xff0c;你可以通过以下的文章对其的实际应用与功能有所了解&#xff0c;以下是文章的具体介绍&#xff0c;望你浏览完以下的内容会有所收获。在Oracle11g r2的活动会话…

请分析比较下列四种染料在相同浓度和相同温度的水染液中的聚集度大小?

请分析比较下列四种染料在相同浓度和相同温度的水染液中的聚集度大小? 标准答案: 染料聚集度从大到小的顺序为:3〉1〉4〉2 比较1-4染料结构差异,1、2共轭体系较短,3、4共轭体系较长,1、3磺酸基在端部,2、4磺酸基在中间; 染料3共轭体系长,范德华力大,而水溶性磺酸基团…

分割范围Codeforces Round #181 (Div. 2)

每日一贴,今天的内容关键字为分割范围 标题链接 A &#xff0c;B虽然是水题&#xff0c;但要是没想清晰就易容掉进某个坑里。。 C&#xff1a;预处理出有所可能的和&#xff0c;然后个每个每和分给a b两个数 D&#xff1a;竞赛的时候标题没看懂&#xff0c;题意就是说在一个n*n…

VC++动态链接库深入浅出(转)

1.概论  先来阐述一下DLL(Dynamic Linkable Library)的概念&#xff0c;你可以简单的把DLL看成一种仓库&#xff0c;它提供给你一些可以直接拿来用的变量、函数或类。在仓库的发展史上经历了“无库&#xff0d;静态链接库&#xff0d;动态链接库”的时代。 静态链接库与动态链…

智能车复工日记【6】:有bug的模糊PID记录

目录 系列文章DYY Warning算法参考链接:代码.c文件.h文件调用方法希望有大佬能帮我指正错误之处。以后假如有机会的话再搞这个模糊吧,头疼!!!系列文章 【智能车Code review】—曲率计算、最小二乘法拟合 【智能车Code review】——坡道图像与控制处理 【智能车Code review…

车刀 matlab,可转位车刀的结构

内容介绍原文档由会员 违规屏蔽12 发布摘 要随着有限元技术的快速发展&#xff0c;结构优化在航空航天、建筑、汽车、工程机械等领域的结构设计方面应用越来越广泛。在刀具行业中&#xff0c;新型刀具材料不断涌现&#xff0c;刀具的结构也在不断发展&#xff0c;目前针对刀具的…

DtCms.Model.Advertising.cs

using System; namespace DtCms.Model {/// <summary>/// 广告位实体类Advertising/// </summary>[Serializable]public class Advertising{public Advertising(){ }#region Modelprivate int _id;private string _title;private int _adtype;private string _adre…