委托练习一
1
class PubEventArgs:System.EventArgs//继承类
2
{
3
private readonly string m_magazinename;
4
private readonly DateTime m_pubdate;
5
public PubEventArgs(string magazinename,DateTime pubdate)
6
{
7
m_magazinename=magazinename;
8
m_pubdate=pubdate;
9
10
}
11
public string Getname
12
{
13
get{return m_magazinename;}
14
}
15
public DateTime Getdate
16
{
17
get {return m_pubdate;}
18
}
19
20
21
22
}
23
class Publisher
24
{
25
public delegate void PubComputerEventHandler(object sender,PubEventArgs e);//定义委托
26
public event PubComputerEventHandler PubComputer;//定义事件
27
protected virtual void OnPubComputer(PubEventArgs e)//引发事件
28
{
29
PubComputerEventHandler handler=PubComputer;
30
if(handler!=null)
31
{
32
handler(this,e);
33
}
34
}
35
public void IssueComputer(string magazinename,DateTime pubdate)//事件发行的方法
36
{
37
Console.WriteLine("发行"+magazinename);
38
OnPubComputer(new PubEventArgs(magazinename, pubdate));
39
}
40
41
}
42
class Subscriber
43
{
44
private string name;
45
public Subscriber(string name)
46
{
47
this.name=name;
48
49
50
}
51
public void receive(object sender,PubEventArgs e)//预委托的方法
52
{
53
Console.WriteLine(e.Getdate+" "+name+"已经收到"+e.Getname);
54
}
55
}
56
class testClass
57
{
58
static void Main()
59
{
60
Publisher pub=new Publisher();
61
Subscriber ZS=new Subscriber("张三");
62
Subscriber LS=new Subscriber("李四");
63
pub.PubComputer +=new Publisher.PubComputerEventHandler(ZS.receive);
64
pub.PubComputer +=new Publisher.PubComputerEventHandler(LS.receive);
65
pub.IssueComputer("电脑杂志",Convert.ToDateTime("2008-5-5"));
66
67
}
68
}
class PubEventArgs:System.EventArgs//继承类2
{3
private readonly string m_magazinename;4
private readonly DateTime m_pubdate;5
public PubEventArgs(string magazinename,DateTime pubdate)6
{7
m_magazinename=magazinename;8
m_pubdate=pubdate;9
10
}11
public string Getname12
{13
get{return m_magazinename;}14
}15
public DateTime Getdate16
{17
get {return m_pubdate;}18
}19
20
21

22
}23
class Publisher24
{25
public delegate void PubComputerEventHandler(object sender,PubEventArgs e);//定义委托26
public event PubComputerEventHandler PubComputer;//定义事件27
protected virtual void OnPubComputer(PubEventArgs e)//引发事件28
{29
PubComputerEventHandler handler=PubComputer;30
if(handler!=null)31
{32
handler(this,e);33
}34
}35
public void IssueComputer(string magazinename,DateTime pubdate)//事件发行的方法36
{37
Console.WriteLine("发行"+magazinename);38
OnPubComputer(new PubEventArgs(magazinename, pubdate));39
}40
41
}42
class Subscriber43
{44
private string name;45
public Subscriber(string name)46
{47
this.name=name;48
49
50
}51
public void receive(object sender,PubEventArgs e)//预委托的方法52
{53
Console.WriteLine(e.Getdate+" "+name+"已经收到"+e.Getname);54
}55
}56
class testClass57
{58
static void Main()59
{60
Publisher pub=new Publisher();61
Subscriber ZS=new Subscriber("张三");62
Subscriber LS=new Subscriber("李四");63
pub.PubComputer +=new Publisher.PubComputerEventHandler(ZS.receive);64
pub.PubComputer +=new Publisher.PubComputerEventHandler(LS.receive);65
pub.IssueComputer("电脑杂志",Convert.ToDateTime("2008-5-5"));66
67
}68
}


浙公网安备 33010602011771号