当前位置 >> 课程学习 >> 第4章 >> 4.5 委托与事件

4.5 委托与事件

4.5.2 委托

    委托类似于函数指针。要使用委托必须首先声明。委托声明定义一种类型,它用一组特定的参数以及返回类型封装方法。对于静态方法,委托对象封装要调用的方法,对于共享方法,委托对象同时封装一个实例和该实例中的一个方法。委托的一个有用的属性是,它不知道或不关心自己引用的对象的类,任何对象都可以,只要方法的参数类型和返回类型与委托的参数类型和返回类型相匹配。委托的使用必须包含以下步骤。
    1.声明委托
    委托声明的语法格式如下:
       Delegate Sub | Function 委托名(参数列表) As 数据类型
    其功能是声明一个新的委托类型“委托名”。每个委托类型都描述参数的数目和类型,以及它可以封装的方法(过程)的返回值类型。
    例如,以下语句声明一个委托fun:
       Delegate Function fun() As Single
    2.实例化委托
    声明了委托后,通过建立委托的实例并使之与特定的方法关联起来,建立委托必须使用AddressOf运算符。AddressOf运算符创建一个指向由其后指定的方法的方法委托。
    例如,定义以下函数,其中有一个参数就是fun委托类型。
    Public Function process(ByVal x as Single, ByVal y as Single ,ByVal f as fun) As Single
    Dim z As Single
    z=f(x,y) ‘调用委托
    Return z
    End Function
    再定义一个有两个形参的add函数用于返回形参之和,这样可以执行以下语句:
       x= process(2,3, AddressOf add)
       其中,AddressOf add就是委托实例。其结果是x=5。