面向对象——(10)委托与事件
来源:互联网 发布:adobe软件打不开 编辑:程序博客网 时间:2024/05/01 11:47
委托是对函数的封装,可以当做给方法的特征制定一个名称。而事件则是委托的一种特殊形式,当发生有意义的事情时,事件对象处理通知过程。
委托是一种引用方法的类型。一旦为委托分配了方法,委托将与该方法具有完全相同的行为。委托对象用关键字delegate来声明。而事件是说在发生其他类或对象关注的事情时,类或对象可通过事件通知它们。事件对象用event关键字声明。
public delegate void CatShoutEventHandler();
public event CatShoutEventHandler CatShout;
委托是一个类,它定义了方法的类型,使得可以将方法当作另一个方法的参数来进行传递,这种将方法动态地赋给参数的做法,可以避免在程序中大量使用If-Else(Switch)语句,同时使得程序具有更好的可扩展性。
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace ConsoleApplication30{ class Program { public delegate void CatShoutEventHandler(); public event CatShoutEventHandler CatShout; static void Main(string[] args) { Cat cat=new Cat ("Tom"); //实例化Tom猫和老鼠Jerry、Jack Mouse mouse1=new Mouse ("Jerry"); Mouse mouse2=new Mouse ("Jack"); cat.CatShout +=new Cat.CatShoutEventHandler(mouse1.Run ); //表示将Mouse的Run方法通过实例化委托Cat.CatShoutEventHandler登记到Cat的事件CatShout当中。其中“+=”表示“add_CatShout"的意思 cat.CatShout +=new Cat.CatShoutEventHandler(mouse2.Run ); cat.Shout (); Console.Read (); } } class Cat { private string name; public Cat(string name) { this.name=name; } public delegate void CatShoutEventHandler(); //声明委托CatShoutEventHandler public event CatShoutEventHandler CatShout; //声明事件CatShout,它的事件类型是委托CatShoutEventHandler public void Shout() { Console.WriteLine ("喵,我是{0}.",name); if (CatShout !=null) { CatShout (); //表明执行Shout()方法时,如果CatShout中有对象登记事件则执行CatShout() } } } class Mouse { private string name; public Mouse (string name) { this.name=name; } public void Run() //逃跑的方法 { Console.WriteLine ("老猫来了,{0}快跑!",name ); } }}
运行结果为:
◆委托在开发中的作用:
启动线程
通用类库
事件
◆委托可以看成是一种数据类型,可以用于定义量,但它是一种特殊的数据类型,它所定义的变量能接收的数值只能是一个函数,更确切的说,委托类型的变量可以接收的数值只能是一个函数,委托的变量可以接收一个函数的地址,类似C++语言的函数指针。
◆委托变量可看成是一种类型安全的函数指针,它只接收符合其要求的函数引用。
3 0
- 面向对象——(10)委托与事件
- 面向对象——一起来复习委托与事件!
- C#——面向对象——事件和委托——委托
- C#——面向对象——事件和委托——事件
- C#——面向对象——事件和委托——Lambda
- 面向对象的委托和事件
- C#—委托与事件
- 面向对象组合方法——委托
- ------事件与委托 (定义与用法) 事件与委托的区别 (委托是类型,事件是对象)
- 《C#面向对象程序设计》新教案发布:《继承、接口与多态》和《委托及事件》
- Javascript面向对象的几种代码实例(对象,继承,重用,委托,类,事件,枚举)
- 委托与事件小结——转载
- 观察者模式——委托与事件
- 【C#】——委托与事件
- 猫和老鼠——委托与事件
- 委托与事件—机房收费系统(实例)
- C# 事件与委托—个人理解
- 面向对象设计与事件
- 一切成功源于积累——20140219 混沌理论三原则
- Android setContentView和inflate区别
- Linux内核调试方法总结
- 一张图描述HotSpot虚拟机垃圾收集器
- 【C++进阶】深入理解C/C++(3)
- 面向对象——(10)委托与事件
- MySQL基础知识---------CHAR和VARCHAR类型
- 只愿得一人心白首不分离
- 甚瞥充艷縇聬蔮絔糮,衛疆螘懊粫遭!
- C语言中修改字符串的一个字符的值
- 虚拟机(Vmware)怎么进入BIOS
- 判断一个外部参照是overlay还是attachment。
- 简明的VIM攻略
- 路由器怎么与路由器连接