zoukankan      html  css  js  c++  java
  • C#基础系列C#中委托与事件(三)

     实例:

    class Program
        {
            static void Main(string[] args)
            {
                DelegateEvent de = new DelegateEvent();
                de.Do();
                Console.Read();
            }
    }
    class DelegateEvent
        {
            public void Do() {
                FangDiChanPublisher fdc = new FangDiChanPublisher();
                BuyerSubscriber buyer = new BuyerSubscriber();
                buyer.BuyerDemand = "80平方米,100万元RMB,三室一厅的房子";
                fdc.PublisherHouseInfo();
                fdc.FindHouseEvent += new HouseDelegateHandler(buyer.BuyHouse);//买房者委托中介找房
                fdc.FindHouse();          // 应该通过FindHouse()来触发事件
                //fdc.FindHouse();     // 但可以被这样直接调用,对委托变量的不恰当使用,当Publisher的委托变量被注释后,则不能这样使用
               
            }
        }

        //定义委托:定义一个房地产中介. 委托是将方法(函数)做为参数传递
        public delegate void HouseDelegateHandler(string message);

        //定义事件发布者
        public class FangDiChanPublisher
        {
            //public HouseDelegateHandler FindHouseEvent;
            public event HouseDelegateHandler FindHouseEvent;// 声明一个事件

            public static string BuyerDemand
            {
                set;
                get;
            }

            public void PublisherHouseInfo()
            {
                Console.WriteLine("深圳某某房地产中介发布房源信息:拥有大量优势房源,有意者请联系:xxxxxxx");
            }

            public void FindHouse() {
                //做其他事情...

                if (FindHouseEvent != null)//如果有买房者委托了中介找房
                {
                    FindHouseEvent(BuyerDemand);
                    Find();//在已有的房源中找匹配的房子...
                }
            }

            public void Find()
            {
                Console.WriteLine("(深圳某某房地产中介)只花了一小会工夫房子就找到了合适的房子.");
            }
        }

        //定义事件订阅者
        public class BuyerSubscriber
        {
            public string BuyerDemand
            {
                set{FangDiChanPublisher.BuyerDemand =value;}
            }
            public void BuyHouse(string demand)
            {
                Console.WriteLine("买房者跟房地产中介提出的需求:{0}",demand);
            }
        }
  • 相关阅读:
    MacOS Catalina 10.15安装教程,启动U盘制作及安装方法
    苹果macOS Catalina 10.15 正式版推送了,要不要升级,需要注意什么?
    Sublime Text Mac如何进行按键绑定?
    Mac软件应用程序打开出现意外退出、崩溃解决办法
    使用VScode Mac版编译配置C/C++程序完整图文教程
    pycharm pro 2019 mac重构技巧?
    一体化数据库管理Navicat Premium for Mac的命令提示代码
    jsonp理解
    linux系统命令大全
    java学习笔记之分层增删改查
  • 原文地址:https://www.cnblogs.com/bicabo/p/2658775.html
Copyright © 2011-2022 走看看