c#语法集之-----事件

本文介绍了C#中的事件概念,强调事件作为私有委托的特性,以及其作为发布/订阅机制的角色。事件是类或结构的成员,允许发布者定义并触发事件,而订阅者则注册事件处理程序,当事件触发时,处理程序会被调用。文中还包含相关代码示例以说明事件的工作原理。

事件

事件本质上是一个私有的委托,对于事件我们只可以添加、删除或调用事件处理程序。
事件基于委托,为委托提供了一种发布/订阅机制

事件是成员,必须声明在类或结构中。

在这里插入图片描述

  1. 发布者定义事件和触发事件的代码
  2. 订阅者注册在事件被触发触发时要调用的方法
  3. 当发布者触发事件时,所有列表中的事件处理程序都会被调用

代码:

class Program
    {
        //声明委托
        public delegate void MyEventHandler(string name);

        //事件的声明需要委托类型的名字
        public static event MyEventHandler Elapsed;//发布者定义事件

        /// <summary>
        /// 发布者定义一个和委托具有相同参数和返回类型方法
        /// </summary>
        /// <param name="name"></param>
        public static void HandlerA(string name)
        {
            Console.WriteLine("HandlerA 我的名字叫 {0}", name);
        }

        /// <summary>
        /// 发布者定义一个和委托具有相同参数和返回类型方法
        /// </summary>
        /// <param name="name"></param>
        public static void HandlerB(string name)
        {
            Console.WriteLine("HandlerB 我的名字叫 {0}", name);
        }

        static void Main(string[] args)
        {
        	//订阅者注册在事件被触发触发时要调用的方法
            Elapsed += HandlerA;//事件订阅,添加处理程序HandlerA
            Elapsed += HandlerB;//事件订阅,添加处理程序HandlerB
			//发布者触发事件
            Elapsed("黑猫");//事件发布

            Elapsed -= HandlerB;//取消订阅,移除处理程序HandlerB
            Console.WriteLine("取消订阅:处理程序HandlerB");
			//发布者触发事件
            Elapsed("白猫");//事件发布

            Console.ReadKey();
        }
    }

代码运行后的结果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值