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);
            }
        }
  • 相关阅读:
    ASP.NET操作文件大全
    Jquery1.7中文文档提供下载了
    修改server2005数据库的区分大小写设置
    SQL SERVER 设置自动备份和删除旧的数据库文件
    ASP.NET关闭下载窗口
    DB2通用分页存储过程
    ASP.NET生成压缩文件(rar打包)
    上传文件实体类
    【Demo 0104】注册/注销热键
    【Demo 0018】SEH结束处理程序
  • 原文地址:https://www.cnblogs.com/bicabo/p/2658775.html
Copyright © 2011-2022 走看看