C#_Lambda表达式
What

使用和匿名方法一样
都是配合委托和事件来使用的
缺点也是和匿名方法一样
可以省略参数类型,提供便利

Why

为开发者提供便利

How

Action a=()=>{};//声明基本和匿名方法一致

Action<int> a=(int value)=>{};无返回值的
Action<int> a=(value)=>{};//可以省略参数类型的

Func<string,int> a=(value)=>{return 0;}//有返回值的
Special【闭包】

内层方法可以引用包含在它外层的方法的变量
即使外层的方法已经执行完毕
在调用外部变量时其生命周期已经被改变(只会去得到变量的最终值进行使用,所以用int index=i;到达每个变量都是最终值的效果)

public class Test1
{
public event Action action;
public Test1()
{
int value = 10;
action = () =>
{
Console.WriteLine(value);
//实例化时value的生命周期已经被改变,只有action置空时才被释放
};
for (int i = 0; i < 10; i++)
{
//此时的index不是之前的index,就可以达到效果
// 可以在这里用int index =i;传进去,在调用时10,0。。。9
action = () =>
{
Console.WriteLine(value);
//调用时不出现10,0。。。9,而是10,10。。。10
};
}
}
}