c#事件(2)

using System;
class Publisher
{
 
 public delegate void PubComputer(string magazineName);
 public delegate void PubLife(string magazineName);
 public event PubComputer OnPubComputer;
 public event PubLife OnPubLife;
 
 public void issueComputer()
 {
  if(OnPubComputer!=null)
  {
   Console.WriteLine("发行<<电脑>>杂志");
   OnPubComputer("电脑杂志");
  }
 }
 
 public void issueLife()
 {
  if(OnPubLife!=null)
  {
   Console.WriteLine("发行<<生活>>杂志");
   OnPubLife("生活杂志");
  }
 }
}

class Subscriber
{
 private string name;
 public Subscriber(string name)
 {
  this.name=name;
 }
 public void Receive(string magazineName)
 {
  Console.WriteLine(name+"已经收到"+magazineName);
 }
}

class Story
{
 static void Main()
 {
  Publisher pub=new Publisher();
  Subscriber zs=new Subscriber("张三");
  pub.OnPubComputer+=new Publisher.PubComputer(zs.Receive);//向事件发行者订阅事件
  //调用事件名称的时候使用的是实例名称
 /*调用委托类型的时候使用的是类名称,因为委托类型本身就是一个静态的类,
 所以只能使用类名调用,当然也可以把事件定义为静态的,这样调用的时候就可以使用类名了*/
  Subscriber ls=new Subscriber("李四");
  pub.OnPubComputer+=new Publisher.PubComputer(ls.Receive);
  pub.OnPubLife+=new Publisher.PubLife(ls.Receive);
  pub.issueComputer();
  pub.issueLife();
  Console.WriteLine();
  Console.WriteLine("一年后");
  pub.OnPubComputer-=new Publisher.PubComputer(ls.Receive);
  pub.issueComputer();
  pub.issueLife();
 }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值