zoukankan      html  css  js  c++  java
  • C# Event事件的订阅与发布

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

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

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

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

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

      这种机制就是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

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

  • 相关阅读:
    javaSE基础知识
    oracle错误分析:ora-04063:view view_test has errors
    爬虫—01-爬虫原理与数据抓取
    Web—13-判断网站请求来自手机还是pc浏览器
    Web—12-详解CSS的相对定位和绝对定位
    Web—11-手机端页面适配
    Web—10-前端性能优化
    Web—09-正则表达式
    知识储备—01-进程,线程,多线程相关总结
    Web—08-移动端库和框架
  • 原文地址:https://www.cnblogs.com/shelly0307/p/7580444.html
Copyright © 2011-2022 走看看