关于委托的理解

学习C#有一段时间了,对委托一直不是很理解,试着说一下。
委托是对方法的传递调用,即把方法像参数一样传递。
我们知道,方法具有参数。这个参数可以是基本数据类型,如int,double等,也可以是引用类型(即类),包括系统自带的和自定义的。例如,我们有个方法Add,它的参数是两个int类型整数。
int Add(int x,int y)
{
return x+y;
}
我们在调用Add方法时,在给它传递实参时只需要是两个int类型的整数即可,即可以是Add(1,2),也可以是Add(3,5),这是显而易见的。
同样,对于一个方法来说,它具有两个限制:返回类型和参数。当把方法作为参数传递时,这个方法以委托的形式出现。在具体调用这个把方法作为参数的函数时,它的实参方法(委托的实例)即是满足了那两个限制的方法,即与形参具有相同的返回类型和参数。说白了,创建函数用委托做形式参数,调用函数时用委托的实例作为实参。
例如:
public delegate int delCompute();//定义委托
class  Compute
{
private int a,b;
public Compute(int a,int b)
  {
    this.a=a;
    this.b=b;
  }

private int compute(delCompute com) //将委托com作为参数传递
   {
return com(a,b);
   }
}


class program
{
static int Add(int a,int b)
  { return a+b;}
static int Subtract(int a,int b)
  {return a-b;}
static void main(stirng[] args)
    {
//实例化两个委托,即给Add与Sbutract方法赋予别名add和subtract。
delCompute add=new delCompute(Add);
delCompute subtract=new delCompute(Subtract);
Computer aa=new Computer(2,3);//实例化Compute类
//调用方法,以委托的实例作为参数
aa.compute(add);
aa.compute(subtract);
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值