您的位置:首页 > 编程语言 > C#

C#==>事件和委托的实例

2010-01-14 23:07 507 查看
一个关于委托和事件的实例,

首先定义了一个员工类,当这个员工下班的时候会自动通知他的经理,并通知时间管理机能来记录下班时间,

同时,继承了一个消息类,用来记录我们自定义的内容: 给经理的留言 下班的时间

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);
}
}
}


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;
}
}


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);
}
}


Timer.cs时间类

/// <summary>
/// 时间管理
/// </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());
}
}


使用

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();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: