委托:对方法的封装
public delegate void Caculate(int a ,int b); --公开的委托,返回类型为void的Caculate(委托名:定义方法类型)的方法,且接受2个int参数;
public void Add(int a,int b)
{
a+=b;
}
Caculate add=Add;
add(2,3);
特点:
1,委托是一种特殊的类型,代表着对方法的引用
2,委托变量可以像方法一样使用
3,委托也需要像类(位置平级)/方法(参数与返回值)一样设置
匿名方法与Lambda:
public delegate int Caculate(int a,int b);
//去掉delegate,并在参数后加=>,=>a+b表示:=>{return a+b}
Caculate methoud=delegate(int a,int b)=> a+b; --方法体内只有一行代码,才能简写,否则=>{代码内容全写};
methoud(2,3);
Lambda委托定义:
//有返回值和参数:
Func<int,int> methoud=(int a)=>a+=3; --Func<int,int(只有最后一个参数为返回值类型,其余为输入参数类型)>
methoud(2); --运行结果为5;
//没有返回值,也没有参数
Action action=()=>Consol.WriteLine("今天晴天"); --就算没有输入参数,也要空的括号;
action; --没有返回值,所以显示System.Action