zoukankan      html  css  js  c++  java
  • 初学笔记(C#事件)

    1.声明事件

         EventHandler是一个预定义的委托,它定义了一个无返回值的方法。在 .Net Fromwork中,他的格式:

                      public  delegate  void EventHandler (Object  sender, EvenArgs  e)

    其中sender的类型为Object,表示时间发布者本身,e用来传递事件的相关信息,数据类型为EvenArgs及其派生类。

         标准的EvenArgs并不包含任何事件数据, 因此EventHandler专用于表示不生成数据的事件的事件方法。如果要事件生成数据,则必须提供自定义的事件类型,该类型从EventArgs派生,提供保存时间数据所需要的全部字段或属性,这样时间发布者可以将特定的数据发送给接收者。

         用标准的EventHandler委托可以声明不包含数据的标准事件:

                    public   event  EvenHandler  事件名;

         要生成包含数据的事件,必须先自定义事件数据类型,有两种:

    (1)先定义委托,再定义事件。

           public class 事件数据类型 : EventArgs   {//封装信息;}

          public delegate  返回值类型  委托类型名 (Object sender, 事件数据类型 e);

         public event 委托类型 事件名;

     (2)使用泛型EventHandler定义事件。

         public class 时间数据类型 : EventArgs    {//封装信息;}

         public event EventHandler<时间数据类型>事件名

    2.订阅事件

          声明事件的实质是定义一个数据变量,并不意味着就能成功触发事件,还要:(1)在事件的接收者中定义一个方法来响应时间,(2)通过创建委托对象把事件与事件方法联系起来(又称绑定事件或订阅事件)。负责绑定事件与事件方法的类就称为时间的订阅者。

            事件名 += new  事件委托名(事件方法);

    注意:

        (1)订阅事件的操作由事件的接收者实现。

       (2)每个事件都可以有多个处理程序,多个程序按顺序调用。如果一个处理程序发生异常,还未处理的程序则没有机会接受事件。为此,建议事件处理程序迅速处理事件,并避免发生异常。

       (3)订阅事件必须见一个与事件具有相同类型的委托对象,把事件方法当作委托目标,使用“+=”运算符把事件方法添加到源对象的事件中。

       (4)若要取消订阅事件,可使用“-=”。

    3.触发事件

        在C#中,触发事件与委托点用相同,但要注意使用匹配的事件参数。事件一旦触发,相应的事件方法就会被调用,如果该事件没有任何处理程序,则该事件为空。

    4.总结:

         第一步:定义相关信息类;

         第二步:定义事件警报器;

        第三步:声明事件产生时调用的方法;

        第四步:订阅事件;

        第五步:触发事件;

    5.采用基于事件驱动模型进行程序设计,其实过程包括五部分:

         (1)定义事件相关信息类;

        (2)在事件发布者类(事件源)中声明事件,并声明一个负责触发事件的方法;

        (3)在事件接受者类中声明事件产生时调用的方法;

        (4)在事件接受者类中订阅事件;

        (5)在事件接收者类中触发事件。

             初学笔记还望大家多多指点!!!

  • 相关阅读:
    [BUUOJ记录] [强网杯 2019]随便注(三种方法)
    Content Security Policy (CSP)内容安全策略总结
    [HGAME Week2] Cosmos的博客后台
    [BUUOJ记录] [ACTF2020 新生赛]Include
    PHP弱类型hash比较缺陷
    CTF常见源码泄漏总结
    Sqlmap Tamper绕过脚本详解
    Golden Pyramid
    Prime Palindrome Golf
    Min and Max
  • 原文地址:https://www.cnblogs.com/xiaoning1992/p/3970151.html
Copyright © 2011-2022 走看看