一个C# 事件的简单例子
来源:互联网 发布:众途汽车软件 编辑:程序博客网 时间:2024/05/19 04:54
using System;
/**//*
* 一个C# 事件的简单例子
* 功能:当起床铃声响起,就引发学生起床/厨师做早餐两个事件
* 设计很简单,目的是说明C# 中事件的含义
*/
// 定义一个委托
public delegate void DoSomething();
// 产生事件的类
public class Ring
...{
// 声明一个委托事件
public event DoSomething doIt;
// 构造函数
public Ring()
...{
}
// 定义一个方法,即"响铃" 引发一个事件
public void RaiseEvent()
...{
Console.WriteLine("铃声响了.......");
// 通知 学生类,厨师类,该起床的起床,该做早餐的做早餐
if (null != doIt)
...{
doIt(); // 如果有注册的对象,才调用它们的方法
}
}
}
// 学生类( 处理事件类一)
public class HandleEventOfStudents
...{
// 默认构造函数
public HandleEventOfStudents()
...{
}
// 当听到起床铃响起,学生起床(学生太累了,想睡个安稳觉,它告诉“铃声类” :“我好好睡觉,时间到了,你再叫我起床”)
//学生把起床事件登记[委托]到铃声类,让铃声类来通知他起床,自己只管好好睡觉
public void GetUp()
...{
Console.WriteLine("[学生]:听到起床铃声响了,起床了。");
}
}
// 校园厨师类(处理事件类二)
public class HandleEventOfChefs
...{
// 默认构造函数
public HandleEventOfChefs()
...{
}
// 当听到起床铃响起, 应该准备给学生做早餐了(当然厨师也可能能是早就起床了)
// 厨师就把为学生做早餐的事情登记到[委托]到铃声类,让铃声来通知他什么时候做早饭,免得做早了(免得做早了,早餐凉了,做晚了,学生可能就吃不上早餐了)
public void Cook()
...{
Console.WriteLine("[厨师]:听到起床铃声响了,为学生做早餐。");
}
}
// 主类
public class ListenerEvent
...{
public static void Main(String[] args)
...{
Ring ring = new Ring(); // 实例化一个铃声类[它是主角,都是因为它才牵连一系列的动作]
ring.doIt += new HandleEventOfStudents().GetUp; // 告诉铃声类,我委托你什么时候叫我起床.
ring.doIt += new HandleEventOfChefs().Cook; // 告诉铃声类,我也委托你叫我什么时候做早餐
ring.RaiseEvent(); // 你一响起,学生要起床,厨师要早餐,( 所以,大家都不喜欢听到这个铃声")
}
}
/**//*
* 一个C# 事件的简单例子
* 功能:当起床铃声响起,就引发学生起床/厨师做早餐两个事件
* 设计很简单,目的是说明C# 中事件的含义
*/
// 定义一个委托
public delegate void DoSomething();
// 产生事件的类
public class Ring
...{
// 声明一个委托事件
public event DoSomething doIt;
// 构造函数
public Ring()
...{
}
// 定义一个方法,即"响铃" 引发一个事件
public void RaiseEvent()
...{
Console.WriteLine("铃声响了.......");
// 通知 学生类,厨师类,该起床的起床,该做早餐的做早餐
if (null != doIt)
...{
doIt(); // 如果有注册的对象,才调用它们的方法
}
}
}
// 学生类( 处理事件类一)
public class HandleEventOfStudents
...{
// 默认构造函数
public HandleEventOfStudents()
...{
}
// 当听到起床铃响起,学生起床(学生太累了,想睡个安稳觉,它告诉“铃声类” :“我好好睡觉,时间到了,你再叫我起床”)
//学生把起床事件登记[委托]到铃声类,让铃声类来通知他起床,自己只管好好睡觉
public void GetUp()
...{
Console.WriteLine("[学生]:听到起床铃声响了,起床了。");
}
}
// 校园厨师类(处理事件类二)
public class HandleEventOfChefs
...{
// 默认构造函数
public HandleEventOfChefs()
...{
}
// 当听到起床铃响起, 应该准备给学生做早餐了(当然厨师也可能能是早就起床了)
// 厨师就把为学生做早餐的事情登记到[委托]到铃声类,让铃声来通知他什么时候做早饭,免得做早了(免得做早了,早餐凉了,做晚了,学生可能就吃不上早餐了)
public void Cook()
...{
Console.WriteLine("[厨师]:听到起床铃声响了,为学生做早餐。");
}
}
// 主类
public class ListenerEvent
...{
public static void Main(String[] args)
...{
Ring ring = new Ring(); // 实例化一个铃声类[它是主角,都是因为它才牵连一系列的动作]
ring.doIt += new HandleEventOfStudents().GetUp; // 告诉铃声类,我委托你什么时候叫我起床.
ring.doIt += new HandleEventOfChefs().Cook; // 告诉铃声类,我也委托你叫我什么时候做早餐
ring.RaiseEvent(); // 你一响起,学生要起床,厨师要早餐,( 所以,大家都不喜欢听到这个铃声")
}
}
- 一个C# 事件的简单例子
- 一个最简单的C#事件例子
- 一个最简单的C#事件例子
- 一个最简单的C#事件例子
- c#中的事件最简单的例子
- 一个简单的自定义事件的例子
- 事件监听器模式(一个简单的例子)
- c# 学习笔记之九 事件(event)的使用,一个简单例子揭示机理
- C# Remoting的一个简单例子
- C# Remoting的一个简单例子
- C# Remoting的一个简单例子
- c#接口简单易懂的一个例子
- C# hook的一个简单例子
- C# Remoting的一个简单例子
- C# 一个简单的多线程例子
- C#一个简单windows服务的例子
- C#事件代理简单例子
- c#学习笔记之九 事件(event)的使用,一个简单的例子揭示其设计理念
- (原创)利用克拉默法则求解多元一次方程组
- Page.IsValid 属性
- 用ajax实现了联动,可是在后台代码中不能用dropdownlist2.SelectedItem.Text取得第二个的值,总是得到空值
- JAVA例题集合
- 回发或回调参数无效。在配置中使用或在页面中使用 <%@ Page EnableEventValidation="true" %
- 一个C# 事件的简单例子
- 编码之间的问题,其解决方法是在Web.config中添加
- 客户端调用服务器控件的客户端ID
- 一个好程序员的三个条件
- 不要想当然,原来ASP与ASP.NET不能共享会话(Session)
- 设置apache默认打开网页类型
- 网银在线支付平台
- Cross page posting in ASP.NET 2.0
- Controlling Font Size With Javascript