C#_Lambda表達式
What

使用和匿名方法一樣
都是配合委托和事件來使用的
缺點也是和匿名方法一樣
可以省略參數(shù)類型,提供便利

Why

為開發(fā)者提供便利

How

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

Action<int>?a=(int value)=>{};無返回值的
Action<int>?a=(value)=>{};//可以省略參數(shù)類型的

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

內(nèi)層方法可以引用包含在它外層的方法的變量
即使外層的方法已經(jīng)執(zhí)行完畢
在調(diào)用外部變量時其生命周期已經(jīng)被改變(只會去得到變量的最終值進行使用,所以用int? index=i;到達每個變量都是最終值的效果)

public class Test1
{
? ? public event Action action;
? ? public Test1()
? ? {
? ? ? ? int value = 10;
? ? ? ? action = () =>
? ? ? ? {
? ? ? ? ? ? Console.WriteLine(value);
? ? ? ? ? ? //實例化時value的生命周期已經(jīng)被改變,只有action置空時才被釋放
? ? ? ? };
? ? ? ? for (int i = 0; i < 10; i++)
? ? ? ? {
????????????//此時的index不是之前的index,就可以達到效果
????????????//?可以在這里用int index =i;傳進去,在調(diào)用時10,0。。。9
? ? ? ? ? ?action = () =>
? ? ? ? ? ? {
? ? ? ? ? ? ? ? Console.WriteLine(value);
? ? ? ? ? ? ? ? //調(diào)用時不出現(xiàn)10,0。。。9,而是10,10。。。10
? ? ? ? ? ? };
? ? ? ? }
? ? }
}