C#入门学习笔记之事件和委托的实例

发布时间:2020-03-21编辑:脚本学堂
本文介绍下,C#编程中的事件与委托,也是C#入门需要掌握的东西,有需要的朋友参考下吧。

在今天的C#入门笔记中,我们介绍下C#中的事件与委托,通过具体的例子来学习。

 一个关于委托和事件的实例,
首先,定义一个员工类,当这个员工下班时会自动通知他的经理,并通知时间管理机能来记录下班时间,
同时,继承一个消息类,用来记录自定义的内容: 给经理的留言或下班的时间等。

1,Worker.cs 员工类
 

复制代码 代码示例:
/// <summary> 
/// 工人类 
/// </summary> 
class Worker 

//记录工人的名称 
public string Name { get; set; } 
 
public Worker(string name)  

this.Name = name; 

 
//定义一个委托 
public delegate void WorkOverEventHandler(object sender, WorkOverEventArgs e); 
 
//定义一个基于委托的事件 
public event WorkOverEventHandler WorkOver; 
 
//为了引发被委托的事件而创建的OnWorkOver方法 
public void OnWorkOver(object sender, WorkOverEventArgs e) 

if (WorkOver != null) 

WorkOver(sender, e); 


2,WorkOverEventArgs.cs自定义消息
 

复制代码 代码示例:
/// <summary> 
/// 用来记录工作结束的相关消息 
/// </summary> 
class WorkOverEventArgs : EventArgs 

//记录下班时间 
public DateTime OverTime { get; set; } 
 
//记录留言 
public string Message { get; set; } 
 
public WorkOverEventArgs() 

this.OverTime = DateTime.Now; 

 
public WorkOverEventArgs(string strMsg) 

this.OverTime = DateTime.Now; 
this.Message = strMsg; 

3,Manager.cs经理类
 

复制代码 代码示例:
/// <summary> 
/// 经理类 
/// </summary> 
class Manager 

//根据取得的sender和e内的信息显示Worker给经理的留言 
public void WorkerOverShowMessage(object sender, WorkOverEventArgs e) 

Console.WriteLine("Manager类 ==> 来自{0}的留言:“{1}”", (sender as Worker).Name, e.Message); 

4,Timer.cs时间类
 

复制代码 代码示例:
/// <summary> 
/// 时间管理  www.jbxuecom
/// </summary> 
class Timer 

//根据取得的sender和e内的信息显示下班的时间 
public static void WorkerOverShowTime(object sender, WorkOverEventArgs e) 

Console.WriteLine("Timer类 ==> {0}的下班时间 : {1}", (sender as Worker).Name, e.OverTime.ToLongTimeString()); 

5,调用示例
 

复制代码 代码示例:
class Program 

static void Main(string[] args) 

Worker Tom = new Worker("Tom"); 
Manager manager = new Manager(); 
 
//向Tom类添加经理类的事件 
Tom.WorkOver += new Worker.WorkOverEventHandler(manager.WorkerOverShowMessage); 
 
//向Tom类添加时间的处理 
Tom.WorkOver += new Worker.WorkOverEventHandler(Timer.WorkerOverShowTime); 
 
//处理消息类的信息 
WorkOverEventArgs e = new WorkOverEventArgs(); 
e.Message = "我下班了"; 
 
Tom.OnWorkOver(Tom, e); 
 
Console.Read(); 

}