十年網(wǎng)站開發(fā)經驗 + 多家企業(yè)客戶 + 靠譜的建站團隊
量身定制 + 運營維護+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
本篇文章為大家展示了C#中如何使用Lambda表達式,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
創(chuàng)新互聯(lián)公司專注于企業(yè)營銷型網(wǎng)站、網(wǎng)站重做改版、荔城網(wǎng)站定制設計、自適應品牌網(wǎng)站建設、H5網(wǎng)站設計、購物商城網(wǎng)站建設、集團公司官網(wǎng)建設、成都外貿網(wǎng)站建設、高端網(wǎng)站制作、響應式網(wǎng)頁設計等建站業(yè)務,價格優(yōu)惠性價比高,為荔城等各大城市提供網(wǎng)站開發(fā)制作服務。
C# Lambda表達式
我們從“所有字符串查找包含YJingLee子字符串”說起。在C# 2.0中,匿名方法允許我們以內聯(lián)的方式來實現(xiàn)委托實例,它提供強大的函數(shù)式編程語言,但是標記顯得相當?shù)娜唛L和帶有強制性。我們使用C# 2.0 中的匿名方法查找,代碼如下:
var inString = list.FindAll(delegate(string s) { return s.Indexof("YJingLee") >= 0; });
現(xiàn)在可以使用C# 3.0帶來的Lambda表達式允許我們使用一種更接近人的思維、更自然的方式來實現(xiàn)類似于匿名方法同樣的效果,看下面的代碼多么簡潔:
var inString = list.FindAll(s => s.Indexof("YJingLee") >= 0);
Lambda表達式格式:(參數(shù)列表)=>表達式或語句塊
具體意義:定義Lambda接受參數(shù)列表,運行表達式或語句塊返回表達式或語句塊的值傳給這個參數(shù)列表。
C# ambda表達式參數(shù)類型可以是隱式類型或顯式類型。在顯式列表中,每個參數(shù)的類型是顯式指定的,在隱式列表中,參數(shù)的類型由Lambda表達式出現(xiàn)的語境自動推斷類型。
Lambda表達式的參數(shù)列表可以有一個或多個參數(shù),或者無參數(shù)。在有單一的隱型參數(shù)的lambda表達式中,圓括號可以從參數(shù)列表中省略。
例如:
(x, y) => x * y;//多參數(shù),隱式類型=>表達式 x => x * 10;//單參數(shù),隱式類型=>表達式 x => { return x * 10; }; //單參數(shù),隱式類型=>語句塊 (int x) => x * 10;//單參數(shù),顯式類型=>表達式 (int x) => { return x * 10; };//單參數(shù),顯式類型=>語句塊 () => Console.WriteLine(); //無參數(shù)
下面看這個例子:
在前面的帖子中,我們寫了一個User類及增加了2個人,接下來,我們使用由LINQ提供的新的Where和Average方法來返回集合中的人的一個子集,以及計算這個集合中的人的平均年齡:
Listuser = new List { new User{Id=1,Name="YJingLee",Age=22}, new User{Id=2,Name="XieQing",Age=25}, }; //獲取特定人時所用的過濾條件,p參數(shù)屬于User類型 var results = user.Where(p => p.Name == "YJingLee").ToList(); //用User對象的Age值計算平均年齡 var average = user.Average(p => p.Age);
效果圖如下:
對這個Lambda表達式做個簡要分析:
var resultsdelegate = user.Where(delegate(User p) { return p.Name == "YJingLee";// 返回一個布爾值 }); var averagedelegate = user.Average(delegate(User p) { return p.Age; });
C# Lambda表達式L可以被轉換為委托類型D,需要滿足以下條件:
L的參數(shù)類型要與D的參數(shù)個數(shù)相等,類型相同,返回類型相同,無論是表達式,還是語句塊。注意隱式類型要參與類型辨析。
上述內容就是C#中如何使用Lambda表達式,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道。