大白话说事件! 转

 大白话说事件! 转 http://www.cnblogs.com/wudiwushen/archive/2010/04/20/1703763.html

代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

public class Publisher
{
//声明一个出版的委托
public delegate void PublishEventHander();
//在委托的机制下我们建立以个出版事件
public event PublishEventHander OnPublish;
//事件必须要在方法里去触发,出版社发布新书方法
public void issue()
{
//如果有人注册了这个事件,也就是这个事件不是空
if (OnPublish != null)
{
Console.WriteLine(
"最新一期的《火影忍者》今天出版哦!");
OnPublish();
}
}
}

//Subscriber 订阅者,无赖小明
public class MrMing
{
//对事件感兴趣的事情,这里指对出版社的书感兴趣
public static void Receive()
{
Console.WriteLine(
"嘎嘎,我已经收到最新一期的《火影忍者》啦!!");
}
}

//Subscriber 订阅者,悲情人物小张
public class MrZhang
{
//对事件感兴趣的事情
public static void Receive()
{
Console.WriteLine(
"幼稚,这么大了,还看《火影忍者》,SB小明!");
}
}

class Story
{
public static void Main(string[] args)
{
//实例化一个出版社
Publisher publisher = new Publisher();

//给这个出火影忍者的事件注册感兴趣的订阅者,此例中是小明
//publisher.OnPublish += new Publisher.PublishEventHander(MrMing.Receive);
//另一种事件注册方式
publisher.OnPublish += MrMing.Receive;

//发布者在这里触发出版火影忍者的事件
publisher.issue();

Console.ReadKey();
}
}

 

posted on 2010-05-07 20:19  Master zhu  阅读(112)  评论(0编辑  收藏  举报

导航