首先先看下委托:
delegate int GuangChaoshi(int a);
static void Main(string[] args)
{
GuangChaoshi gwl = JieZhang;
Console.WriteLine(gwl(10) + ""); //打印20,委托的应用
Console.ReadKey();
}
public static int JieZhang(int a)
{
return a + 10;
}
再看Lambda表达式:
//委托 逛超市
delegate int GuangChaoshi(int a);
static void Main(string[] args)
{
// GuangChaoshi gwl = JieZhang;
GuangChaoshi gwl = x => x + 10;
Console.WriteLine(gwl(10) + ""); //打印20,表达式的应用
Console.ReadKey();
}
多参数:
//委托 逛超市
delegate int GuangChaoshi(int a,int b);
static void Main(string[] args)
{
GuangChaoshi gwl = (x,y) => y-(x + 10);
Console.WriteLine(gwl(10,100) + ""); //打印80,z对应参数b,p对应参数a
Console.ReadKey();
}
Lambda主体运算复杂 :
delegate int GuangChaoshi(int a,int b);
static void Main(string[] args)
{
GuangChaoshi gwl = (x, y) =>
{
int zuidixiaofei = 10;
if (y< zuidixiaofei)
{
return 100;
}
else
{
return y - x - 10;
}
};
Console.WriteLine(gwl(10,100) + ""); //打印80,z对应参数b,p对应参数a
Console.ReadKey();
}
再来看下匿名方法:
Func<int,int,int> info = delegate (int a,int b)
{
return a + b;
};
Console.WriteLine (info(1,2));
对应Lambda表达式:
Func<int,in,int> info =(x,y)=>x+y;
Console.WriteLine (info(1,2));
Func第三个参数代表返回值类型。例如:
Func<int,in,bool> info =(x,y)=>x>y;
Console.WriteLine (info(1,2));