.Net中委托与事件入门级的写法(有趣的生活实例)
来源:互联网 发布:淘宝一个月后申请售后 编辑:程序博客网 时间:2024/05/16 12:27
看了园子里好多前辈高手对于.Net事件和委托的文章,觉得受益非浅。俗话说,“好记性不如烂笔头”,开博至今,为免纰漏,一直不敢将自己写的粗糙代码放上来,今天又看到群里的人在问委托与事件的简单问题,为此,特别写了一个由生活实例抽象出来的最简单的委托与事件的DEMO,作为我在csdn上的第一篇文章,恳请各位路过的高手予以指正,不胜感激!
源码如下:
using System;
namespace SisterAndBrother
{
/* 家庭里有很多事件实例啊,例如:妈妈要做饭,就让女儿照看小儿子,
* 告诉他,一旦发现他尿尿了,就马上喊妈妈来。结果小儿子一会就尿
* 尿了打湿了裤子,女儿赶紧就喊妈妈,说:妈妈赶快来,弟弟尿尿了!
* 妈妈就过来把小儿子的裤子换掉。
*
* 在上面的这件事情中。首先,妈妈要女儿照看着小儿子,就是一个委托
* 声明,(也可以理解为一个特殊的“照看”类),只不过它特殊的是它在
* 实例化的时候,所带的签名是一个方法,就是“发现弟弟尿尿了喊妈妈“,
* 而这个”喊妈妈“就是一个方法,而非一般的属性(照看的人,照看的时
* 间等)。儿子尿尿就是一个事件。而女儿在照看着弟弟有没有拉尿尿(弟弟
* 尿尿了就喊妈妈)就是一个事件订阅。一旦触发(儿子开始尿尿了),女儿就
* 会执行这个实例化委托中签名的方法(”喊妈妈“)。
*/
//定义委托类
public delegate void UrineHandler(object sender, EventArgs e); //第一步 定义委托
class Program
{
static void Main(string[] args)
{
Console.WriteLine("场景开始了...");
//生成姐姐
姐姐 s = new 姐姐();
//生成弟弟
弟弟 b = new 弟弟();
//妈妈指定姐姐照看弟弟,就是一个事件订阅,也可称为实例化事件
b.Urine += new UrineHandler(s.喊妈妈); //第三步:事件订阅,将实例化的委托添加到弟弟的事件中
b.弟弟尿尿();//弟弟开始尿尿了,开始触发事件 第四步:某个方法触发事件
Console.WriteLine("场景结束...");
Console.ReadLine();
}
}
//姐姐类
public class 姐姐
{
//构造方法
public 姐姐()
{
Console.WriteLine("生成姐姐...");
}
//定义“喊妈妈"的方法
public void 喊妈妈(object sender, EventArgs e)
{
Console.WriteLine("姐姐发现弟弟尿尿了,开始喊...");
Console.WriteLine("妈妈赶快来,弟弟尿尿了!...");
Console.WriteLine("妈妈过来了,替儿子换衣服...");
}
}
//弟弟类
public class 弟弟
{
//先定义一个事件,这个事件表示弟弟拉尿尿
public event UrineHandler Urine; //第二步 定义与该委托相关联的事件
//构造方法
public 弟弟()
{
Console.WriteLine("生成弟弟...");
}
//定义弟弟尿尿的方法
public void 弟弟尿尿()
{
Console.WriteLine("弟弟开始尿尿了...");
System.EventArgs e = new EventArgs();
Urine(this, e); // 第五步:执行事件
}
}
}
- .Net中委托与事件入门级的写法(有趣的生活实例)
- .net 中委托与事件的理解!
- .net的事件与委托(转载)
- .net的事件与委托
- .NET框架中委托的写法
- .NET 3.5中委托的写法(Lambda表达式)
- .Net中事件与委托的示例详细解
- .Net中事件与委托的示例详细解
- 委托与事件的入门说明
- 事件与委托的入门例子
- 生活中有趣的潜规则
- asp.net的事件与委托
- .net的事件与委托机制
- ASP.NET中"委托"(delegate)的使用简单实例
- 从.NET中委托写法的演变谈开去(中):Lambda表达式及其优势
- 从.NET框架中委托写法的演变谈开去(上)
- 委托入门-事件与委托
- C# 中关于委托和事件的一个实例
- JS显示当前页面路径的代码
- qq对话
- Hibernate使用过程中的一些优化措施
- 任务管理器中一些进程总结
- 进程和对应病毒
- .Net中委托与事件入门级的写法(有趣的生活实例)
- 网站推广的几种方式
- oracle的连接
- pku 3277 City Horizon(离散化+线段树)
- AJAX技术简介及入门实例
- SQL优化(1)
- 字符编码简介(ASCII,ISOXXX,GB2312,GBK,UNICODE,UTF-8)
- 主流RIA技术的简单比较 JavaFX、Flex 和 silverLight
- 八戒创业记