C#学习之多线程开发技术(十四)

委托 事件

   委托

   ------委托的定义

        委托的定义和方法类似,只是在委托的定义在前面加了一个delegate,但是委托不是方法,它是一种类型,是一种特殊的类型,常常把委托堪称是一种新的对象类型,用于对与该委托有相同签名的方法调用。委托相当于C++中的函数指针,但是它是类型安全的。委托是从System.Delegate中派生,但定义委托不能像定义常规类型一样直接从System.Delegate派生,对委托的的声明只能通过上面的声明格式进行定义。关键字delegate通知编译器这是一个委托类型,从而在编译的时候对该类进行封装,C#定义了专门的语法来处理这一过程。

-------委托的声明

       委托是引用类型,声明一个委托的方式如下:
       修饰符 delegate返回类型委托名(参数列表);
       形式参数列表指定了委托的签名,而结果类型指定了委托的返回类型。
       委托的声明与方法的声明有些相似,这是因为委托就是为了进行方法的引用。但要注意,委托是一种类型,而方法是类的成员
      例如:public delegatedouble MyDelegate ( double x );
      声明一个委托类型的变量,与声明一个普通变量的方式一样:
      委托类型名 委托变量名;
      如:MyDelegate d;

------委托的实例化

  对委托进行实例化,即创建一个委托的实例的方法如下:
new 委托类型名 (方法名);
  其中,方法名可以是某个类的静态方法名,也可以是某个对象实例的实例方法名。方法的签名及返回值类型必须与代理类型所声明的一致。例如:
MyDelegate d1 = new MyDelegate(System.Sqrt);
MyDelegate d2 = new MyDelegate(obj.myMethod);

------委托的调用

    委托的调用方式与方法的调用方式是一样的,都是传入参数,并获得返回值,形式如下:
委托变量名 ( 参数列表
      委托的一个重要特点是委托的在调用方法时,不必关心方法所属的对象的类型,它只要求所提供的方法的签名和委托的签名相匹配

  事件

 --------事件的定义

     事件就是当对象或类的状态发生改变时,对象或类发出的信息和通知。发出信息的对象或类称为事件源,对事件进行处理的方法称为接受者,通常事件源在发出状态改变信息时骂他不知道由哪个事件接收处理,这就需要一种管理机制来协调事件源和接受者,在c++中,是通过函数指针来完成的。在C#中事件委托使用委托来为触发时将要调用的方法提供类型安全的封装。

---------声明一个委托

如:
public delegate void EventHandle(object sender, System.EventArgs e);

-------声明一个事件

   方式如下:
修饰符 event 指代表类型名事件名
   其中,修饰符可以为访问控制符( public, private,protected,protected internal)以及其他修饰符,如 static,new, virtual,abstract,sealed等。

-------引发一个事件

public OnChanged(EventArgs e)
{
      if (Changed != null)
      {
            Changed(this, e);
       }
}

------定义事件处理程序

public MyText_Changed(Object sender, EventArgs e)
{
       ///---do  something
       ///......
}

-----订阅事件(将事件处理程序添加到事件的调用列表中)


my_Text.Changed += EventHandler(MyText_Changed);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值