首先,先说明事件跟委托的关系,事件并不等于委托,事件等于委托链。
C#中处理事件的六个步骤:1、声明事件所需的代理;
2、事件的声明;
3、定义触发事件的方法;
4、订阅者定义事件处理程序;
5、向事件发行者订阅一个事件;
6、触发事件。
根据上面六个步骤,写出一个事件的过程,代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace TestEvent
{
class RichMan //老板
{
public delegate void TreasurerSendMoney(); //1、声明老板发工资事件所需的代理-"财务员发工资"
public event TreasurerSendMoney OnSendMoney; //2、声明财务员发工资事件
public void sendMoneyTimeOut() //3、触发财务员发工资的方法
{
if (OnSendMoney != null)
{
Console.WriteLine("亲,开始发工资啦!");
OnSendMoney();
Console.WriteLine("火热发送工资中...");
}
}
}
class PoorMan //工人
{
public void TakeMoney() //4、工人拿到工资之后的处理方法
{
Console.WriteLine("我终于拿到工资啦!!!明天有钱旅游啦!!!");
}
}
class Program
{
static void Main(string[] args)
{
RichMan richMan = new RichMan();
PoorMan poorMan = new PoorMan();
richMan.OnSendMoney += new RichMan.TreasurerSendMoney(poorMan.TakeMoney); //5、将工人拿工资之后的处理方法绑定到老板发工资的事件中
richMan.sendMoneyTimeOut(); //6、触发发工资事件的方法
Console.ReadLine();
}
}
}
运行程序,可以看到如下输出:
亲,开始发工资啦!
我终于拿到工资啦!!!明天有钱旅游啦!!!
火热发送工资中...
源码链接:http://download.csdn.net/detail/scrystally/5763405