using System;
class publishr//声明一个类
{
public delegate void pubcomputer(string zazhiname);//声明一个带参数的委托
public delegate void pubwomen(string zazhiname);//同上
public event pubcomputer onpubcomputer;//声明了一个事件,对应着上面的pubcomputer委托
public event pubwomen onpubwomen;//又声明了一个事件,对应着上面的pubwumen委托类型
public void iscomputer()//声明了一个方法,判断并触发事件
{
if (onpubcomputer==null)
{
Console.WriteLine(" no pub computer zazhi ");
}
else
{
Console.WriteLine(" pub computer zazhi");
onpubcomputer(" computer ");//事件对应的委托对象,委托如果带参数,事件也要带参数!
}
}
public void iswomen()
{
if (onpubwomen==null)
{
Console.WriteLine(" no pub women zazhi ");
}
else
{
Console.WriteLine(" pub women zazhi");
onpubwomen(" women ");//同上
}
}
}
class yonghu//用户类
{
private string name;
public yonghu(string name)//声明了一个构造函数
{
this.name=name;
}
public void receive(string zazhiname)//声明了一个方法
{
Console.WriteLine(name+" receive "+zazhiname+"zazhi");
}
}
class main
{
static void Main()//入口函数
{
publishr pub =new publishr();// publishr类实例化
yonghu zs =new yonghu("mary");//用户类实例化
yonghu ls=new yonghu("john");//同上
pub.onpubcomputer +=new publishr.pubcomputer(zs.receive);//pub 对象的事件通过publishr.pubcomputer委托加载了zs即用户类实例的一个方法
pub.iscomputer();//通过publishr的对象方法触发publishr类的事件
pub.onpubwomen +=new publishr.pubwomen(ls.receive);//道理同上
pub.iswomen();//道理同上
}
}