using System; class Publisher // 出版社 ... { public delegate void Publish();//声明事件所需的代理 public event Publish OnPublish;//事件的声明 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();//实例化了Publisher类,声明了代理、事件,但OnPublish=null不触发事件 Subscriber zs = new Subscriber();//实例化了Subscriber类, Publisher.Publish ZS=new Publisher.Publish(zs.Receive);//代理zs.Receive方法,代理默认是static的,所以直接类名.代理名访问 Pub.OnPublish += ZS;//把ZS这个代理加入到On事件(有点象委托链),事件用对象名.事件名访问 Pub.issue();//触发事件 }}