• 关于事件和委托不得不说的事
  • 超级玛丽 发表于 2014/10/17 12:59:00 | 分类标签: 事件 委托 触发事件
  • 下面是一个最简单的事件例子:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    class Test
    {      
        public delegate void EventHandler();  //①申明委托;
        public event EventHandler Handler;      //②定义事件;
        static void Main()
        
            Test t=new Test();
             t.Handler +=new Test.EventHandler(MethodA);   //③将事件与委托关联(订阅事件);
             t.Handler();         //④触发事件;
        }
        public static void MethodA()
        {
           System.Console.WriteLine("方法A");
        }
    }


    注意:

    1.委托delegate和事件Event的关系:

    委托(delegate)相当于一系列函数的抽象类,这一系列函数要求拥有相同的参数和返回值;而事件(Event)相当于委托的一个实例,只是前面冠有Event关键字。

    2.在关联委托和事件时,应该注意:

    ①委托和事件都应该有应用对象来引用。

    ②传入委托中的函数,只写函数名,不带括号。

    3.事件的触发,必须要有由具体的引用对象来触发。

    将事件和委托和委托方法写在类外的代码为:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    using System;
    class Test
        static void Main()
        {
              A a=new A();   //为了引用Handler而实例化A对象;
              B b=new B();   //为了引用B对象中的A方法而实例化B对象;
              a.Handler +=new A.EventHandler(b.MethodA);
              a.Start();   
         }
    }
    class A
    {
          public delegate void EventHandler();  
          public event EventHandler Handler;
          public void Start()
         {
             if(Handler!=null)
              {
                  Handler();
              }
         }
    }
    class B
    {
         public void MethodA()
         {
           Console.WriteLine("方法A");
         }
    }
  • 请您注意

    ·自觉遵守:爱国、守法、自律、真实、文明的原则

    ·尊重网上道德,遵守《全国人大常委会关于维护互联网安全的决定》及中华人民共和国其他各项有关法律法规

    ·严禁发表危害国家安全,破坏民族团结、国家宗教政策和社会稳定,含侮辱、诽谤、教唆、淫秽等内容的作品

    ·承担一切因您的行为而直接或间接导致的民事或刑事法律责任

    ·您在编程中国社区新闻评论发表的作品,本网站有权在网站内保留、转载、引用或者删除

    ·参与本评论即表明您已经阅读并接受上述条款

  • 感谢本文作者
  • 作者头像
  • 昵称:超级玛丽
  • 加入时间:2013/6/13 0:00:00
  • TA的签名
  • 这家伙很懒,虾米都没写
  • +进入TA的空间
  • 以下内容也很赞哦
分享按钮