• 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);
            }
        }
  • 相关阅读:
    springboot2 整合雪花算法,并兼容分布式部署
    docker 在 linux 搭建私有仓库
    jdbc 几种关系型数据库的连接 和 driver_class,以及简单的使用
    springboot2 整合发送邮件的功能
    oracle 唯一新约束 和 逻辑删除的 冲突处理办法
    oracle 一些常见操作方法
    spring-cloud-stream 整合 rabbitmq
    springboot2 整合 rabbitmq
    docker 安装 rabbitmq 消息队列
    网络统计学目录
  • 原文地址:https://www.cnblogs.com/bicabo/p/2658775.html
Copyright © 2020-2023  润新知