C# Event事件的订阅与发布

2021-05-12 10:27

阅读:722

标签:stat   code   col   实现   event   传递   www.   color   注册   

我们用一个简单的例子,来说明一下这种消息传递的机制。

  有一家三口,妈妈负责做饭,爸爸和孩子负责吃。。。将这三个人,想象成三个类。

  妈妈有一个方法,叫做“做饭”。有一个事件,叫做“开饭”。做完饭后,调用开发事件,发布开饭消息。

  爸爸和孩子分别有一个方法,叫做“吃饭”。

  将爸爸和孩子的“吃饭”方法,注册到妈妈的“开饭”事件。也就是,订阅妈妈的开饭消息。让妈妈做完饭开饭时,发布吃饭消息时,告诉爸爸和孩子一声。

  这种机制就是C#中的,订阅发布。下面我们用代码实现:

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 
 6 namespace EventSimpleDemo
 7 {
 8     class Program
 9     {
10         static void Main(string[] args)
11         {
12             Mom mom = new Mom();
13             Dad dad = new Dad();
14             Son son = new Son();
15             mom.Eat += new Action(dad.Eat);// 订阅
16             //mom.Eat += new Action(son.Eat);
17 
18             mom.Cooking();
19             Console.ReadKey();
20         }
21     }
22 
23     public class Mom
24     {
25         //public delegate void delegateAction();
26         public event Action Eat;// Action 可以改成委托方法:delegateAction
27 
28         public void Cooking()
29         {
30             Console.WriteLine("妈妈:饭好了!");
31             if (Eat != null)
32             {
33                 Eat();
34             }
35         } 
36     }
37 
38     public class Dad
39     {
40         public void Eat()
41         {
42             Console.WriteLine("爸爸:马上来!");
43         }
44     }
45 
46     public class Son
47     {
48         public void Eat()
49         {
50             Console.WriteLine("儿子:等会再吃!");
51         }
52     }
53 
54 }

来源:http://www.cnblogs.com/David-Huang/p/5150671.html

作者写的这个事件通俗易懂,忍不住把它拷贝过来

C# Event事件的订阅与发布

标签:stat   code   col   实现   event   传递   www.   color   注册   

原文地址:http://www.cnblogs.com/shelly0307/p/7580444.html


评论


亲,登录后才可以留言!