C# 事件
实例1:
View Code
1 using System;
2 class Publisher//出版社
3 {
4 public delegate void Publish();//事件所需要的委托(注意,声明委托,必须加上括号)
5 public event Publish OnPublish;//事件声明
6 public void issue()//触发事件的方法
7 {
8 if (OnPublish != null)
9 {
10 Console.WriteLine("出版刊物");
11 OnPublish();
12 }
13 }
14 }
15 class Subscriber//订阅者
16 {
17 public void Receive()//事件调用方法
18 {
19 Console.WriteLine("订阅者已经受到刊物!");
20 }
21 }
22 class Test
23 {
24 public static void Main()
25 {
26 Publisher Pub = new Publisher();
27 Subscriber zs = new Subscriber();
28 Pub.OnPublish += new Publisher.Publish(zs.Receive);//向事件发行者订阅一个事件
29 Pub.issue();//触发事件
30 }
31 }
实例2:
View Code
1 using System;
2 class Publisher//出版社
3 {
4 public delegate void PubComputer(string magazineName);//事件所需要的委托
5 public delegate void PubLife(string magazineName);
6 public event PubComputer OnPubComputer;//事件声明
7 public event PubLife OnPubLife;
8 public void issueComputer()//触发事件的方法
9 {
10 if (OnPubComputer != null)
11 {
12 Console.WriteLine("出版<<电脑>>杂志");
13 OnPubComputer("电脑杂志");
14 }
15 }
16 public void issueLife()
17 {
18 if (OnPubLife != null)
19 {
20 Console.WriteLine("出版<<生活>>杂志");
21 OnPubLife("生活杂志");
22 }
23 }
24 }
25 class Subscriber//订阅者
26 {
27 private string name;
28 public Subscriber(string name)
29 {
30 this.name = name;
31 }
32 public void Receive(string magazineName)//事件调用方法
33 {
34 Console.WriteLine(name + "订阅了" + magazineName);
35 }
36 }
37 class Test
38 {
39 public static void Main()
40 {
41 Publisher Pub = new Publisher();
42 Subscriber zs = new Subscriber("张三");
43 Pub.OnPubComputer += new Publisher.PubComputer(zs.Receive);//向事件发行者订阅一个事件
44
45 Subscriber ls = new Subscriber("李四");
46 Pub.OnPubComputer += new Publisher.PubComputer(ls.Receive);//向事件发行者订阅一个事件
47 Pub.OnPubLife += new Publisher.PubLife(ls.Receive);//向事件发行者订阅一个事件
48 Pub.issueComputer();//触发事件
49 Pub.issueLife();//触发事件
50
51 Console.WriteLine();
52 Console.WriteLine("一年后");
53 Pub.OnPubComputer -= new Publisher.PubComputer(ls.Receive);
54 Pub.issueComputer();//触发事件
55 Pub.issueLife();//触发事件
56 }
57 }


浙公网安备 33010602011771号