Lambda表達(dá)式
Lambda表達(dá)式,其實(shí)就是匿名方法的一個(gè)簡(jiǎn)寫(xiě)。
比如這個(gè)匿名方法:
static void Main(string[] args)
{? Func<int, int, int> plus = delegate (int a, int b)
? ? { return a + b; } ;??int?res=?plus(1,2) ;?int res= plus(1,2) ;?Console.WriteLine(res) ;
}
它就可以簡(jiǎn)寫(xiě)成:
{? Func<int, int, int> plus = (a, b) => { return a + b; } ;
? ??int?res=?plus(1,2);
? ??Console.WriteLine(res);
? ? //這樣的話,一行代碼就可以搞定了
}
當(dāng)表達(dá)式只有一條語(yǔ)句時(shí),可以把這個(gè)括號(hào)和return語(yǔ)句都省略掉。
于是就變成了:
{??Func<int,?int,?int>?plus?= (a,?b)?=> a+b;
? ??Console.WriteLine(res);
}
如果只有一個(gè)參數(shù),那就連括號(hào)都不需要,
{??Func<int,?int,?int>?square?= a=>?a*a;//square是求平方
? ??Console.WriteLine(res);
}
Lambda表達(dá)式是可以訪問(wèn)外部變量的。
比如:
? ? ? ? ? int a = 5;
? ? ? ? ? Func<int, int> f = x => x + a;
? ? ? ? ? Console.WriteLine();

外部變量還可以重新賦值。
