委托和事件

C#中委托和事件的区别 事件就是委托属性啊,有个add和remove以及一个私有委托 很多人说:“总是感觉委托和事件没什么区别,调用事件不就是相当于调用多个委托么?” 不全对,事件之于委托,就相当于,集合的属性之于集合的元素,注意:事件封装了一层,事件其实就是一个特殊的多播委托 class Program { public delegate void SendHandler(string str); public e... 阅读详情
委托和事件
要为类构造一个事件,必须用 event 来声明一个 delegate 型的字段,如:

puclic calss Test{
         public delegate EventHandler(object sender, EventArgs e); //声明为delegate 型的事件;
}

然后要指定一个事件的名称,并写出处理语句:
        public event  EventHandler Load

在创建类的实例后定义这个 “Load”事件:
        Test m=new Test();
        m.load=new EventHandler(m_Load);
        void m_Load(object sender, EventArgs e)
        {
                MessageBox.Show(" this is a class event");
        }      


再看看下面的完整的一段代码:

 

 1using System;
 2

 3class
 TestClass
 4
{
 5    static void Main(string
[] args)
 6     
{
 7        EventClass myEventClass = new
 EventClass();
 8        myEventClass.CustomEvent += new EventClass.CustomEventHandler(CustomEvent1); // 关联事件句柄;

 9        myEventClass.CustomEvent += new EventClass.CustomEventHandler(CustomEvent2); 
10
        myEventClass.InvokeEvent();
11        myEventClass.CustomEvent -= new
 EventClass.CustomEventHandler(CustomEvent2);
12
        myEventClass.InvokeEvent();
13        myEventClass.Load += new
 EventClass.CustomEventHandler(Load1);
14
        myEventClass.onLoad();
15    }

16
17    private static void CustomEvent1(object
 sender, EventArgs e)
18    
{
19        Console.WriteLine("Fire Event 1"
);
20    }

21
22    private static void CustomEvent2(object
 sender, EventArgs e)
23    
{
24        Console.WriteLine("Fire Event 2"
);
25    }

26    private static void Load1(object sender, EventArgs e)
27    
{
28        Console.WriteLine("Current background color is {0}. Please input:"
, System.Console.BackgroundColor.ToString());
29    }

30}

31
32public class
 EventClass
33
{
34    public delegate void CustomEventHandler(object sender, EventArgs e);//
首先定义一个委托类型的对象CustomEventHandler
35

36    //用delegate数据类型声明事件,要用event关键字,这里定义了两个字件;

37    public event CustomEventHandler CustomEvent;
38    public event
 CustomEventHandler Load;
39
        
40    public void
 InvokeEvent()
41    
{
42        CustomEvent(this
, EventArgs.Empty);
43    }

44    public void onLoad()
45    
{
46        Console.BackgroundColor =
 ConsoleColor.Red;
47        Load(this
, EventArgs.Empty);
48        string s =
 Console.ReadLine();
49        if (s != "yuping"
)
50        
{
51            Console.WriteLine("You must type 'yuping' for change it !"
);
52        }

53        else
54        {
55            Console.BackgroundColor =
 System.ConsoleColor.Black;
56
            Console.Clear();
57        }

58
59    }

60}

61

        可以用 csc.exe 快速生成上面的代码程序。

        在包含事件声明的类中,声明一个数据类型是委托的这么样的一个对象CustomEventHandler, 它有两个参数(sender和e);在这里使用委托的目的就是在运行中向参数传递方法,并由委托对象生成的实例接收这个参数方法的返回值,因此,在声明委托型的对象时应根据类中的方法结构来定义,或者说在引用类中应当根据委托型对象的结构来生成响应事件的方法结构,比如两者都有哪些类型的参数、返回值的类型,也就是说两者要保持一致。同时,要正确地使用C#中的委托,就必须保持三个步骤:声明——实例化——调用。 
        
        在上面的代码中,EventClass 类就体现了这个原则:
        1. 声明委托类型的对象: public delegate void CustomEventHandler(object sender, EventArgs e);
        2. 创建CustomEventHandler对象的实例CustomEvent:public event CustomEventHandler CustomEvent;
        3. 在InvokeEvent()方法中实现了对该事件的调用,引用事件。

        完了,  就可以在引用类(上面的为TestClass)中像使用windows标准控件一样添加事件并编写事件处理方法了。

        看了一天的委托讲解,才渐渐有点明白,我想大根就是这个意思吧,不知道大家是怎么理解这个JAVA中没有的委托:)

 
C#委托和事件 C#委托和事件 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 开发工具与关键技术:C# 作者:吴锦华 撰写时间:2021/10/28 一、委托的概念 委托从字面上理解就是一种代理,类似于房屋中介,由租房人委托中介为其租赁房屋。 在 C# 语言中,委托则委托某个方法来实现具体的功能。 委托的特点: 1、委托是一种引用类型,虽然在定义委托时与方法有些相似,但不能将其称为.. 阅读详情

相关推荐

RYU+Mininet的SDN架构-设计校园网络(一)

现有一个中学,需要设计一个中小型网络满足学校的网络需求。学校有教学区,实验室区域和服务器区域。教学区为了满足接入的灵活性和信号强度要求,需要满足设计WIFI满足日常教室和同学需求,接入上限为200人。实验室区域需要有一台教师主机方便管理实验室其余电脑,并且教师主机可以访问学校服务器,方便为同学们实验室授课。学校服务器区域设有学校相关重要文件和学校网页相关内容。最后学校还会接入互联网。

weixin_53284122的博客 8034

C#体验·委托和事件

要为类构造一个事件,必须用 event 来声明一个 delegate 型的字段,如:puclic calss Test{ public delegate EventHandler(object sender, EventArgs e); //声明为delegate 型的事件;}然后要指定一个事件的名称,并写出处理语句: public event EventHandl...

weixin_30607029的博客 149

Python+Appium实现泛微OA自动打卡:5分钟搭建移动端自动化脚本

移动端自动化测试是软件测试与办公自动化领域的重要技术方向,其核心原理是通过程序模拟用户对手机应用界面的操作,实现重复性任务的自动执行。Appium作为主流的开源移动端自动化框架,基于WebDriver协议,支持跨平台且无需修改被测应用,为自动化脚本开发提供了标准化接口。在工程实践中,结合Python简洁的语法和丰富的生态,可以快速构建稳定可靠的自动化解决方案。这一技术组合的价值在于能够高效处理“重复性、低价值、高频率”的日常操作,例如考勤打卡、数据填报等办公场景,显著提升工作效率。本文以泛微OA Emobi

weixin_28836875的博客 389

c#何时使用委托

通过一个方法调用另一个方法,简化语句重复 跨线程更改《控件》属性(注意:控件 不等于 组件) 附: C:\Users\Administrator\Documents\Visual Studio 2015\Projects\WindowsForms_learn中c#程序 参考: c#委托(Delegates)–基本概念及使用 为什么有时跨线程更改toolStripStatusLabel控件Text...

qq_42697866的博客 972

Vivado实战:UltraScale/UltraScale+器件eFUSE寄存器配置与安全编程全解析

本文详细解析了Xilinx UltraScale/UltraScale+器件中eFUSE寄存器的配置与安全编程方法。从芯片唯一身份标识到加密密钥烧录,再到用户寄存器的灵活应用和安全控制寄存器的配置技巧,全面介绍了如何利用eFUSE功能提升硬件安全性。文章还提供了JTAG接口安全管理和NKZ文件备份方案,帮助开发者避免常见陷阱,确保安全编程的可靠性。

weixin_42535703的博客 427

关于SVPWM七段式五段式调制后的相电压和线电压波形——大疆DJI技术笔试

1.SVPWM七段式/五段式调制的相电压和线电压波形 脉宽调制(PWM)在并网变流技术中得到了广泛的应用。与正弦脉宽调制(SPWM)的控制方法相比,SVPWM方法具有直流侧电压利用率高,电压谐波小,易于数字化实现等显著的优点,从而使SVPWM在实际的应用中越来越普遍。TMS320F28335是32位浮点的DSP控制器,具有150MHz的高速处理能力,18路PWM输出,与前几代数字信号控制器相比,性能平均提高了50%。其中具体的SVPWM理论实现的原理,请参考我的博客永磁同步电机的矢量控制策略(七)一一一SV

昔时扬尘处 2万+

关于C#的委托和时间

 委托和事件在 .Net Framework中的应用非常广泛,然而,较好地理解委托和事件对很多接触C#时间不长的人来说并不容易。它们就像是一道槛儿,过了这个槛的人,觉得真是太容易了,而没有过去的人每次见到委托和事件就觉得心里别(biè)得慌,混身不自在。本文中,我将通过两个范例由浅入深地讲述什么是委托、为什么要使用委托、事件的由来、.Net Framework中的委托和事件、委托和事件对Obs

marey_marey111的专栏 1430

用SOLIDWORKS从零画一个履带机器人,手把手教你搞定底盘和传动

本文详细介绍了如何使用SOLIDWORKS从零开始设计履带式机器人,重点讲解底盘结构优化和传动系统设计的关键步骤。通过七个阶段的实战指南,包括前期规划、底盘建模、驱动系统装配、履带生成、动态模拟等,帮助工程师和爱好者掌握履带机器人的核心设计技巧,提升地形适应能力和动力效率。

weixin_30872499的博客 632

C#中委托和事件

关于委托和事件分享三个博客内容: 首先说明下: (1)C#中事件:事件时属于类的成员,所以要放在类的内部。 (2)委托属于一个定义,是和类、接口类似的,通常放在外部。 (因为大多数委托都要被重用) 委托定义在类里面还是类外面视情况而定,一般定义在与类定义平级部分, 且用public修饰,便于外部调用。 若定义在类的内部,则必须通过调用该类的成员才能取得其委托的引用, 频繁...

andu1644的博客 1万+

S7-1200PLC 2轴直线插补详细算法(完整源代码)

速度轴V90PN总线伺服梯形加减速速度控制(标准报文1应用)_v90伺服加减速时间怎么调整-优快云博客文章浏览阅读288次。

RXXW_Dor的博客 4256

【GEOS-Chem模拟教程第二期下】全球生物质燃烧 GFAS 数据配置

本博客详细介绍全球生物质燃烧 GFAS 数据下载及在 GEOS-CHEM 模型中的配置

WW、forever的博客 1394

C#中的委托和事件

一:定义 ——委托是一种存储函数引用的类型 ——就像我们定义一个string str一样,这个str变量就是string类型,因为C#中没有函数类型,但是可以定义一个委托类型,把一个函数赋给这个委托 ——委托的定义与函数的定义类似,需要加上delegate关键字但是不需要函数体——委托与枚举体,结构体等一样,需要先定义,再声明,再使用——当我们给一个委托的变量赋值时,返回值与参数必须与定义的委托...

L的博客 1万+

rk3588 适配以太网(百兆)

虽然 RK3588 的 GMAC 控制器原生支持千兆速率(10/100/1000 Mbps),但在某些工业控制、物联网网关或成本敏感型硬件设计中,开发者会选择将其配置为 百兆以太网(Fast Ethernet) 模式。

weixin_35723192的博客 218

什么是事件冒泡和事件委托?如何实现事件委托?

一、事件冒泡 1、什么是事件冒泡 2、阻止事件冒泡的方式 3、事件冒泡的优点 二、事件委托/事件代理 1、什么是事件委托 2、为什么要用事件委托? 3、事件委托的原理 4、事件委托怎么实现 5、事件源 6、 实现不同的点击效果 7、 新增的节点如何实现事件委托? 8、什么样的事件可以用事件委托,什么样的事件不可以用? 9、事件委托的优缺点 事件委托是利用事件的冒泡原理来实现的。 事件冒泡就是事件从最深的节点开始,然后逐步向上传播事件。如果要用事件委托,就会将所有的操作放到 js

小草莓的博客 3257

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

C# 委托和事件

在C#中 委托可以看作一个方法的模板类,这个类的对象可以引用匹配模板类的方法。所以,1 定义委托必须签名: 指定特定的返回值参数。2 委托对象指向函数时: 指向的方法返回值,参数 都要符合。3 委托对象调用函数时: 必须提供符合模板设定的参数和返回值。//定义委托//输出 5delegate 关键字声明委托上图可以看出声明了一个MathOperation委托类,Sum方法符合该类的模板规定。然后该类实例指向Sum方法,通过回调函数Invoke,传递符合委托模板规定的参数,调用执行。

qq_59774036的博客 1867

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

关于事件冒泡、事件捕获和事件委托

前置知识 事件流 在第四代Web浏览器(IE4 和 Netscape Communicator4 )开始开发时,开发团队碰到了一个有意思的问题:页面哪个部分拥有特定的事件呢? 两家浏览器的开发团队都是以同样的方式看待浏览器事件的。当你点击一个按钮的时候,实际上不光点击了这个按钮,还点击了它的容器以及整个页面。 事件流描述了页面接收事件的顺序。结果非常有意思, IE 和 Netscape 开发团队提出了几乎完全相反的事件流方案。IE将支持 事件冒泡 流 , 而 Netscape Communicator 将支

weixin_69356624的博客 3030

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

C#委托和事件的区别

C#委托delegate(Action、Func、lamda表达式)、事件

gengshiyao的博客 3986

委托和事件详解

这篇委托和事件的学习笔记介绍了委托和事件,什么是委托、委托的声明、Action以及Func委托的使用、委托与Lambda表达式、委托的使用(模版与回调)、接着介绍委托的缺点引出事件,什么是事件、事件模型的步骤和组成部分、实际案例以及事件语法,最后就常考点提出了两个问题,解答了委托与事件的关系

feifei2233的博客 1239

JavaScript 事件冒泡和事件委托

JavaScript 事件冒泡和事件委托

ltlt654321的博客 2244

JS 事件代理和事件委托

事件委托的概念理解 为什么叫事件委托?它还有一个名字叫事件代理。 JavaScript高级程序设计上讲:事件委托就是利用事件冒泡,只指定一个事件处理程序,就可以管理某一类型的所有事件。 那这是什么意思呢?网上的各位大牛们讲事件委托基本上都用了同一个例子,就是取快递来解释这个现象,我仔细揣摩了一下,这个例子还真是恰当,我就不去想别的例子来解释了,借花献佛,我摘过来,大家认真领会一下事件委托到底是一个什么原理: 有三个同事预计会在周一收到快递。为签收快递,有两种办法:一是三个人在公司门口等快递;二是委托

csdssdn的博客 2622

C# 委托和事件委托

C# 本文描述了什么是委托,什么是事件委托,如何他们,并使用C#代码描述了如何实现的。 目录: 什么是委托? 1、概念 2、代码描述委托 什么是事件委托? 1、概念 2、代码描述事件委托

C/C#、Android driver、STM32、Linux等等。 1987

事件冒泡和事件委托

事件流:事件执行顺序我们叫他事件流。事件流中事件冒泡的由来:IE公司认为,如果你面前有个靶子,你的飞镖射中了其中一环,并不仅仅是只对这一环产生了操作,而是对整个靶子都产生了操作。所以,当最里面的元素触发了事件的时候,会依次向上触发所有元素的相同事件(从触发事件的元素开始一直向上触发),但是事件冒泡对我们几乎没有任何好处,所以我们需要阻止事件冒泡,禁止之后事件只会停留在当前层。通俗的来讲就是:触发子元素身上的事件也可以触发父元素身上同等类型事件。

zzy18203753038的博客 1743
上一篇: SQL常用字符串函数
SmartJavaer
博客等级 码龄21年 13粉丝 37原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值