一、什么是委托
委托可以将方法作为参数,方便以不同的方式调用
二、委托的分类
1.delegate:
①:C#的关键字,一种声明
②:至少0个参数,至多32个参数,可以无返回值
public delegate int ReturnWithPara(int x, int y); // 声明一个带参数带返回值的委托
public int MethodWithPara(int a,int b){ //此处的返回值及参数需跟委托一样
return a+b;
}
ReturnWithPara returnWithPara=new ReturnWithPara(MethodWithPara);
int c=returnWithPara.Invoke(3,4); //也可直接调用
2.Action
①:基于delegate的特殊用法
②:至少0个参数,至多16个参数,无返回值
public void ActionWithPara(int a,int b)
{
Console.WriteLine(a + b);
}
Action<int, int> action= new Action<int, int>(ActionWithPara); //实例化一个委托
action.Invoke(3,4);
3.Func
①:基于delegate的特殊用法
②:至少0个参数,至多16个参数,必须有返回值
public int FunWithPara(int a,int b)
{
Console.WriteLine(a + b);
}
Func<int, int, int> func = new Func<int, int, int>(FunWithPara); //最后一个int为返回值
func.Invoke(3, 4);
lambda写法
Func<int, int, int> func = new Func<int, int, int>((a,b)=>
{
return a + b;
});
func.Invoke(3, 4);