马上加入IBC程序猿 各种源码随意下,各种教程随便看! 注册 每日签到 加入编程讨论群

C#教程 ASP.NET教程 C#视频教程程序源码享受不尽 C#技术求助 ASP.NET技术求助

【源码下载】 社群合作 申请版主 程序开发 【远程协助】 每天乐一乐 每日签到 【承接外包项目】 面试-葵花宝典下载

官方一群:

官方二群:

事件,委托,3点总结

[复制链接]
查看8041 | 回复2 | 2015-11-19 22:23:55 | 显示全部楼层 |阅读模式
[C#] 纯文本查看 复制代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace 事件委托1
{
    //总结
    //1.事件(event)是基于委托(delegate)的,所以想要定义事件,首先要有1个委托类型,做支撑
    //2.如果有了事件,要去查找这个事件什么时候被触发,也就是这个事件什么时候被调用了(事件名称();)
    //3.事件触发的时候,支撑这个事件的委托指向了哪个方法?



    public delegate void MyDel(); //定义1个无参无返回的委托类型,这里是总结里面的第1个点的后半部分!!!

    class OnOff
    {
        public event MyDel t; //1个基于MyDel委托类型的事件,这里是总结里面的第1个点的前半部分!!!

        /// <summary>
        /// 打开开关
        /// </summary>
        public void On()
        {
            t(); //触发这个事件,这里是总结里面的第2个点!!!
        }
        
        /// <summary>
        /// 这里应该算是事件的处理器
        /// </summary>
        public void lightOn()
        {
            Console.WriteLine("灯亮了");
        }
    
    }
    
    class Program
    {
        /// <summary>
        /// 主函数
        /// </summary>
        /// <param name="args"></param>
        static void Main(string[] args)
        {
            OnOff o = new OnOff();
            o.t += new MyDel(o.lightOn); //这里是总结里面的第3个点!!!
            Console.WriteLine("我要打开开关了啊");
            o.On(); //调用这个函数的时候会触发t事件
            Console.ReadLine();
        }
    }
}

ibcadmin | 2015-12-14 17:55:49 | 显示全部楼层
C#论坛 www.ibcibc.com IBC编程社区
C#
C#论坛
IBC编程社区
Ainy | 2016-1-5 15:33:28 | 显示全部楼层
有点意思哈 ------
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则