去百度发了个问题,当然了是个菜鸟问题,其实看了后面的懂了一些,但还是看看别人怎么说吧:
using System;
using System.Collections.Generic;
using System.Text;
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("一年以后");
pub.OnPubComputer -= new Publisher.PubComputer(ls.Receive);
pub.issueComputer();//触发事件
pub.issueLife();
Console.ReadKey();
}
}
请问为什么OnPubComputer("电脑杂志");和OnPubLife("生活杂志");的值要传递给public void Receive(string magazineName)方法?
OnPubLife("生活杂志");和OnPubComputer("电脑杂志");还是事件么?