在一个事件发起者类中,声明delegate表明事件触发时要调用的处理函数的类型。
根据delegate声明一个event,类似函数指针,执行时触发事件,类似与通过函数指针调用函数。
在事件处理类中,定义一些事件处理函数,与上面delegate类型一致。
通过+=向事件发起者类的event添加处理函数;或者通过-=删除处理函数。
当发起者的事件被触发时,会调用处理类添加的处理函数。
using System;
class Test
{
//事件发起者
class A
{
//声明delegate,当事件触发时,调用的函数类型
public delegate void MyDele();
//声明event,与delegate关联
public event MyDele ad;
//执行该方法时,触发事件
public void Run()
{
ad();
}
}
//实现了事件触发时需要调用的函数
class B
{
//向事件发起者添加事件处理函数
public void AddProc(A a)
{
a.ad += new A.MyDele(First);
a.ad += new A.MyDele(Second);
}
//向事件发起者删除事件处理函数
public void DelProc(A a)
{
a.ad -= new A.MyDele(First);
}
//处理函数
private void First()
{
Console.WriteLine("First");
}
private void Second()
{
Console.WriteLine("Second");
}
}
static void Main()
{
A a = new A();
B b = new B();
b.AddProc(a);
a.Run();
b.DelProc(a);
a.Run();
}
}