zoukankan      html  css  js  c++  java
  • C# event入门案例

    C#中事件是一种特殊的委托

    class Publisher //出版社
        {
            public delegate void Publish();//声明事件所需的代理
            public event Publish OnPublish;//事件的声明
            public void issue()//触发事件
            {
                if (OnPublish != null)
                {
                    Console.WriteLine("发行刊物");
                    OnPublish();
                }
            }
            
        }
        class Subscriber//订阅者
        {
            public void Receive()//在事件订阅者中定义事件处理程序
            {
                Console.WriteLine("订阅者已经收到刊物");
            }
        }
        class Story
        {
            static void Main()
            {
                Publisher Pub = new Publisher();
                Subscriber zs = new Subscriber();
                Pub.OnPublish+=new Publisher.Publish(zs.Receive);//向事件发行者订阅一个事件
                Pub.issue();//触发事件
            }
        }

    例子二:

    class Publisher//出版社
        {
            public delegate void PubComputer(string magazineName);//声明事件所需的代理
            public delegate void PubLift(string magazineName);
            public event PubComputer OnPubComputer;//事件的声明
            public event PubLift OnPubLife;
            public void issueComputer()//触发事件的方法
            {
                if (OnPubComputer != null)
                {
                    Console.WriteLine("发行电脑杂志");
                    OnPubComputer("电脑杂志");
                }
            }
            public void issueLife()
            {
                if (OnPubLife != null)
                {
                    Console.WriteLine("发行生活杂志");
                    OnPubLife("生活杂志");
                }
            }
        }
        class Subscriber//订阅者
        {
            private string name;
            public Subscriber(string name)
            {
                this.name = name;
            }
            public void Receive(string magazineName)//在事件订阅者中定义事件处理程序
            {
                Console.WriteLine(name + "已经收到" + magazineName);
            }
        }
        class Story
        {
            static void Main()
            {
                Publisher Pub = new Publisher();
                Subscriber zs = new Subscriber("张三");
                Pub.OnPubComputer+=new Publisher.PubComputer(zs.Receive);//向事件发行者订阅一个事件
                Subscriber ls = new Subscriber("李四");
                Pub.OnPubComputer += new Publisher.PubLift(ls.Receive);
                Pub.OnPubLife+=new Publisher.PubLift(ls.Receive);
                Pub.issueComputer();//触发事件
                Pub.issueLife();
                Console.WriteLine();
                Console.WriteLine("一年后");
                Pub.OnPubComputer -= new Publisher.PubComputer(ls.Receive);
                Pub.issueComputer();
                Pub.issueLife();
            }
        }

    高山仰止, 景行行止。 四牡鲱鲱, 六辔如琴。 觏尔新婚, 以慰我心。
  • 相关阅读:
    directives vant之Field输入限制【v-input-float】
    【vue】 typeScript OSS图片压缩处理工具类
    vue单页面加载js方法
    H5网页打开App以及App内某个页面
    适配iphoneX万能方法!!!
    固定底部button按钮,兼容各种手机、微信等【flex布局】
    天行数据小程序demo
    iview Weapp index索引器 cityjs 增加每个城市的code值
    小程序上传图片至七牛云(支持多张上传、预览、删除图片)
    (转)异步与非阻塞之间的区别(看到的最清晰的说明)
  • 原文地址:https://www.cnblogs.com/davidshi/p/3299244.html
Copyright © 2011-2022 走看看