您的位置:首页 > 编程语言 > C#

C#学习3——委托和事件

2008-07-22 23:20 337 查看
    最近两天学习了第7章——委托与事件,因为这个知识点我以前也看到,似懂非懂的。所以这一章我花

两天的事件来读。

    委托:

    C#中的委托是类型安全的函数指针,是一种特殊的对象类型,其特殊之处在于它不包含任何数据,只

包含的是方法的地址。

    可以在定义类的地方定义delegate。

    delegate必须与它所代表的方法有相同的签名。

    可以使用delegate推断来初始化委托,也可以使用匿名方法来定义委托,可以做的好处可以降低代码

的复杂性,但是执行会不太快。匿名方法不能有跳转到外部的语句,外部语句也不能跳转到匿名方法内



    事件:

    在C#中事件是一个已定义的对象,该对象处理通知过程。

    事件接收器是指发生某些事情时被通知的任何应用程序、对象和组件。

    事件发生器的作用时引发事件。

    事件接收器中有一个方法,它负责处理事件。

    委托在事件中作为发生器和接收器的中介。

    怎么使用事件呢?可以按照创建、引发、接收和处理的步骤来完成。

    1.应该有婚介所,即delegate
    public delegate void ActionEventHandler(object sender,EventArgs e);

    2.富翁委托婚介所征婚,这个过程包含定义了一个事件,以及确定了事件的接收器和事件处理的方法


    public static event ActionEventHandler Action;
    事件的接收器就是该富翁,他对婚介所提供一些自己的信息和对配偶的要求,如果应征者的条件符合

他的要求,就委托中介联系他。
    private void _Action(object sender,EventArgs e)
    {
         if(true)
         {
               //通知富翁有合适的人选,并把女子的信息(包含在EventArgs中)告诉富翁。
         }
         else
         {
              //告诉女子她不合适,但是富翁并不知道有这么个女孩去应征过
         }
    }
    3.富翁提出要求后就会,婚介所就会发布信息。即通过委托注册这个事件。
    _.Action += new _.ActionEventHandler(object sender,EventArgs e);(实例化委托)
    以上过程都可以说是创建事件。
   4.女子联婚介所应征。此过程是引发事件。
   女子把自己的信息,比如年龄、长相、学历(即实例化EventArgs)等告诉婚介所。
   EventArgs e = new EventArgs();
   然后发送事件OnAction(this,e);
   5.婚介所接收到女子的信息,此过程是接收,是通过委托接收的。婚介所将this,e传送给事件处理程序(委托匹配的方法)。
   6.处理程序根据女子的信息(e)进行选择,并将处理结果通知给女子(this)。
  
  
   
   
   
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c# object action