淺談對(duì)Lambda表達(dá)式的理解
在.NET 1.0的時(shí)候,大家都知道我們經(jīng)常用到的是委托。有了委托呢,我們就可以像傳遞變量一樣的傳遞方法。在一定程序上來講,委托是一種強(qiáng)類型的托管的方法指 針,曾經(jīng)也一時(shí)被我們用的那叫一個(gè)廣泛呀,但是總的來說委托使用起來還是有一些繁瑣。來看看使用一個(gè)委托一共要以下幾個(gè)步驟:
用delegate關(guān)鍵字創(chuàng)建一個(gè)委托,包括聲明返回值和參數(shù)類型
使用的地方接收這個(gè)委托
創(chuàng)建這個(gè)委托的實(shí)例并指定一個(gè)返回值和參數(shù)類型匹配的方法傳遞過去
好啦,我承認(rèn)啦上面是自己在網(wǎng)上看到的,但是它很好的介紹了委托,在以前要使用委托的話,就必須要進(jìn)過上面的3個(gè)不步奏,在我看來真的覺得是挺繁雜的,所以主題來了Lambda表達(dá)式,它可以通過匿名的方法來繞過步奏2,所以我只需要定義一個(gè)委托后,再使用Lambda表達(dá)式來實(shí)現(xiàn)委托,下面寫一個(gè)小小的例子看看吧:
// 編譯器不知道后面到底是什么玩意,所以我們這里不能用var關(guān)鍵字
Action dummyLambda = () => { Console.WriteLine("Hello World from a Lambda expression!"); };
// double y = square(25);
Func<double, double> square = x => x * x;
// double z = product(9, 5);
Func<double, double, double> product = (x, y) => x * y;
// printProduct(9, 5);
Action<double, double> printProduct = (x, y) => { Console.WriteLine(x * y); };
// var sum = dotProduct(new double[] { 1, 2, 3 }, new double[] { 4, 5, 6 });
Func<double[], double[], double> dotProduct = (x, y) =>
{
var dim = Math.Min(x.Length, y.Length);
var sum = 0.0;
for (var i = 0; i != dim; i++)
sum += x[i] + y[i];
return sum;
};
// var result = matrixVectorProductAsync(...);
Func<double, double, Task<double>> matrixVectorProductAsync = async (x, y) =>
{
var sum = 0.0;
/* do some stuff using await ... */
return sum;
};
從上面的代碼中我們可以看出:
如果只有一個(gè)參數(shù),不需要寫()
如果只有一條執(zhí)行語句,并且我們要返回它,就不需要{},并且不用寫return
Lambda可以異步執(zhí)行,只要在前面加上async關(guān)鍵字即可
Var關(guān)鍵字在大多數(shù)情況下都不能使用
以上所述就是本文的全部內(nèi)容了,希望大家能夠喜歡。
相關(guān)文章
Visual?Studio創(chuàng)建WPF項(xiàng)目
這篇文章介紹了使用Visual?Studio創(chuàng)建WPF項(xiàng)目的方法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-04-04
Global.asax的Application_BeginRequest實(shí)現(xiàn)url重寫無后綴的代碼
本文為大家詳細(xì)介紹下利用Global.asax的Application_BeginRequest 實(shí)現(xiàn)url重寫其無后綴,具體核心代碼如下,有需求的朋友可以參考下,希望對(duì)大家有所幫助2013-08-08
ASP.NET Core中的Razor頁面實(shí)現(xiàn)路由功能
本文詳細(xì)講解了ASP.NET Core中的Razor頁面實(shí)現(xiàn)路由功能的方法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-02-02
手把手教你AspNetCore WebApi認(rèn)證與授權(quán)的方法
這篇文章主要介紹了手把手教你AspNetCore WebApi認(rèn)證與授權(quán)的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10
在.net core中實(shí)現(xiàn)字段和屬性注入的示例代碼
這篇文章主要介紹了在.net core中實(shí)現(xiàn)字段和屬性注入的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08
詳解.NET中的加密算法總結(jié)(自定義加密Helper類續(xù))
這篇文章主要介紹了詳解.NET中的加密算法總結(jié)(自定義加密Helper類續(xù)) ,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2016-12-12

