C#事件总结与应用_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > C#事件总结与应用

C#事件总结与应用

 2017/5/25 5:34:53  给颗糖就笑的孩纸  程序员俱乐部  我要评论(0)
  • 摘要:C#事件总结与应用什么是事件?事件是特殊化的委托,委托是事件的基础,所以在介绍事件之前先介绍一下委托通俗的说就是:事件就是消息驱动器通过委托类来调用感兴趣的方法,事实上事件调用是间接的调用就像是显示中我的代理人一样发布者与订阅者在学习事件的时候们首先要明白什么是发布者什么是订阅者:通知某件事情发生的,就是发布者(例如我发布了微博)对某件事情关注的,就是订阅者(例如我关注了微博)事件触发和注册事件发生时,会通知所有关注该事件的订阅者(例如我发布了新的微博)想在事件发生时被通知,就必须注册表示关注
  • 标签:事件 总结 C# 应用

C#事件总结与应用

 

什么是事件

 

事件是特殊化的委托,委托是事件的基础,所以在介绍事件之前先介绍一下委托

 

通俗的说就是

事件就是消息驱动器通过委托类来调用感兴趣的方法,事实上事件调用是间接的调用  就像是显示中我的代理人一样

 

发布者与订阅者

在学习事件的时候们首先要明白什么是发布者什么是订阅者:

通知某件事情发生的,就是发布者(例如我发布了微博)

对某件事情关注的,就是订阅者(例如我关注了微博)

事件触发和注册

事件发生时,会通知所有关注该事件的订阅者(例如我发布了新的微博)

想在事件发生时被通知,就必须注册表示关注(例如我关注微博有了新的动态)

事件的声明

事件的声明首先要先定义一个委托类 ,因为事件的触发就是调用一系列订阅者注册函数的过程 而委托本身就可以持有多个签名返回值相同的函数

事件的声明的关键字:event

笔者在这里写了一个关于学校上下课的事件

 

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

 

namespace 事件

{

    public delegate void EventHandler(int ringKind);//声明一个带参数的委托

    public class ShoolRing //定义一个发布者类

 

    {

 

        public event EventHandler OnBellSound;//委托发布

        public void Jow(int ringKind)//实现打铃操作

        {

            if (ringKind == 1 || ringKind == 2)//判断打铃是否合法

            {

                Console.Write(ringKind == 1 ? "上课铃响了," : "下课铃响了 ,");

                if (OnBellSound != null)//如果委托事件不等于空则回调委托所定义的方法

                {

 

                    OnBellSound(ringKind);

                }

            }

            else

            {

                Console.WriteLine(" 这个铃声参数不正确!");

          

            }

        }

 

 

    }

    public class Studens

    {

       

 

 

        public void ShowJow(int ringKind)//学生方法

        {

            if (ringKind == 1)

            {

                Console.WriteLine("同学们去上课!");

            }

            else if (ringKind == 2)

            {

                Console.WriteLine("同学们课间休息了!");

            }

        }

}

}

class Program

    {

        static void Main(string[] args)

        {

            ShoolRing shool = new ShoolRing();//实例化发布者类

 

            Studens stu = new Studens();//实例化订阅者类

            shool.OnBellSound += stu.ShowJow;//订阅事件

         

 

            shool.Jow(Convert.ToInt32(Console.ReadLine()));

            Console.ReadLine();

     

 

 

 

        }

    }

}

 

 

 

发表评论
用户名: 匿名