关于委托

委托(delegate)简单来说是可以将方法作为参数传递的对象,可以说是一个接口,不过约束了指向方法的签名。

示例:定义一个委托(委托和接口一样可以定义在类外部)

delegate int Wt(int x);任何返回值和参数与此委托相同的都可调用

如:

static int Double(int i){ return i*2;}

实例:

Wt wt=new Wt(Double);  或者 Wt wt=Double;

调用:

int result=wt(2); 结果 result = 4;

作用:可以实现插件式编程(减少重复性代码)

delegate int Wt(int x);

class Test{

  static int Double(int i){ return i*2;}//整数double

  static int Square(int i){ return i^2;}//整数开平方

  static void Main(String[] args){

    int[] values=[1,2,3,4];

    Cj.WtCj(values,Double);

    //values结果为[2,4,6,8] 

    Cj.WtCj(values,Square);

    //values结果为[1,4,9,16] 

  }

}

class Cj{

  public static void WtCj(int[] values,Wt wt){

    for(int i = 0; i<values.length;i++){

      values[i]=wt(values[i]);

    }

  }

}

上面的Cj是固定不变的,功能实现了整数的Double和Square功能,相当于是一个简单的插件。

如果还不理解,假设不用委托。写法如:

class Cj{

  public static void Double(int[] values){

    for(int i = 0; i<values.length;i++){

      values[i]=Double([i]);//直接用方法将values数组中的数字*2

    }

  }

}

虽然上面一样可实现重复调用,但是也只适用于整数的Double功能。比如说对values数组开平方等等功能无法实现,还需要额外再次编写方法。

 

转载于:https://www.cnblogs.com/94LH-shuai/p/8994348.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值