C#使用委托和事件实现发布订阅者模式

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_41556165/article/details/82924684

事件是C#中的高级概念,和js中的鼠标点击$("tag").click,悬停$("tag").hover或css元素样式的改变(onChanged)等事件,当事件触发才执行我们所委托的方法。

步骤:
1、创建一个委托;
2、将创建的委托与特定事件关联;
3、编写C#事件处理程序;
4、利用编写的C#事件处理程序生成一个委托实例;
5、把这个委托实例添加到产生事件对象的事件列表中去(+=),这个过程又叫订阅事件。取消的方式是(-=)
 

点击才执行,不点击不执行:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Example_EventTest
{
    class JudgeEvent
    { 
        //定义一个委托
        public delegate void delegateClick();
        //定义一个事件
        public event delegateClick eventClick;
        //引发事件的方法
        public void onClick()
        {
            eventClick();//被引发的事件
        } 
    }
    class DoClick
    { 
        //定义事件处理方法
        public void doC()
        {
            Console.WriteLine("鼠标被点击了");
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            DoClickrunsport = new DoClick();//实例化事件发布者
            JudgeEvent JudgeE= new JudgeEvent();//实例化事件订阅者

            //订阅事件
            JudgeE.evenClick+=new JudgeE.delegateClick(DoClick.doC);

            //引发事件
            JudgeE.onClick();

            Console.ReadKey();
        }
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_41556165/article/details/82924684