using System;
class Publisher //出版社,事件的发行者
{
//声明事件所需的代理
public delegate void Publish();/*事件是通过委托的机制而达成的,
若要定义事件首先事件的发行者要定义一个委托类型*/
public event Publish OnPublish;/*定义事件OnPublish和Publish相关联,当OnPublish事件触发时
便可以通过Publish这个委托类型回调事件处理程序 */
//事件的触发是通过方法来实现的
public void issue()//触发事件的方法
{
if(OnPublish!=null)
{
Console.WriteLine("发行刊物");
OnPublish();//触发事件,用事件的名称后加()就可以了.
}
}
}
class Subscriber //事件订阅者
{
//注意:事件处理程序中所定义的方法,必须和委托类型返回值及参数相同
public void Receive()//事件处理程序
{
Console.WriteLine("订阅者已经收到了刊物");
}
}
class Story
{
static void Main()
{
Publisher pub=new Publisher();//建立一个事件发行者
Subscriber zs=new Subscriber();//建立一个订阅者张三
pub.OnPublish+=new Publisher.Publish(zs.Receive);//向事件发行者订阅一个事件
pub.issue();//触发事件
}
}