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);
            }
        }
  • 相关阅读:
    SQL 执行进展优化
    初识SQL 执行顺序
    前端模块化开发的价值(转)
    js 闭包之一
    js模块开发(一)
    简单说说call 与apply
    js 爱恨情仇说 this
    说说 js String
    $Ajax简单理解
    SQL-如何使用 MongoDB和PyMongo。
  • 原文地址:https://www.cnblogs.com/bicabo/p/2658775.html
Copyright © 2011-2022 走看看