C#委托

来源:互联网 发布:淘宝正义哥之家店铺 编辑:程序博客网 时间:2024/06/08 03:31

什么时候用委托?代码想要执行操作,但不需要知道操作细节

相当于c++的函数指针

 

例如,在c++中

int (*f)(int a, int b); // 声明函数指针

int max (int a,int b)  //定义一个求最大值的函数

f =max  //令指针变量f指向函数max

c = (*f)(1, 2); //直接调用指针f求最大值



如何使用委托?

1、声明委托类型

2、要有一个方法包含要执行的代码

3、创建一个委托实例

4、调用(invoke)该实例

 

创建委托实例

1、  如果是静态方法,指定类型名称即可

2、  如果是实例方法,就需要先建一个实例,再调用该方法


如何调用?

调用一个委托实例的方法就可以了。这个方法本身称为Invoke

 


[委托修饰符] delegate 返回类型 标识符 (形参表)


例如

//该委托可以指向任何传入两个整数返回一个整数的方法

public delegate  int  BinaryOp(int x,int y)

BinaryOp good = new  BinaryOp(A.max) //调用某个对象的方法名

console.writeline(“{0}”,good(10,20))//委托对象间接调用invoke()方法

console.writeline(“{0}”,good.invoke(10,20))//委托对象直接调用invoke()方法

 

 //某个对象的方法的实现

class A

{

static max(int a,int b)

}