C# 3.0語言增強學習筆記(二)

來源:互聯網
上載者:User

      前面複習了"隱式類型局部變數","擴充方法","對象和集合初始化器","匿名方法"知識點。見C# 3.0語言增強學習筆記(一)

這裡我們另外複習C# 3.0的其他新特性:Lambda運算式

初識Lambda運算式:

使用C# 2.0中的匿名方法尋找"內部包含abc子串的所有字串": 

List.FindAll(
      delegate(string s){
      return s.Indexof("abc")>0}
)

 使用C# 3.0中的Lambda運算式尋找"內部包含abc子串的所有字串":

List.FindAll(s=>s.IndexOf("abc")>0)

 

Lambda運算式簡介

為什麼Lambda運算式比匿名方法更好?

C# 2.0的匿名方法允許我們以內聯的方式來實現委託執行個體,而C# 3.0的Lambda運算式運行我們使用一種更接近人的思維,更自然的方式來實作類別似於匿名方法同樣的效果。

Lambda運算式格式

(參數列表)=>運算式或者語句塊

可以有多個參數,一個參數,或者無參數。參數類型可以隱式或者顯式。例如:

(x,y)=>x*y //多參數,隱式類型=>運算式
x=>x*10 //單參數,隱式類型=>運算式
x=>{return x*10} //單參數,隱式類型=>語句塊
(int x) => x*10 //單參數,顯式類型=>運算式
(int x) =>{return x*10} //單參數,顯示類型=>語句塊
()=>{Console.WriteLine()}//無參數

注意:

1.Lambda運算式的參數類型可以省略,因為可以根據使用上下文進行推測。

2.Lambda運算式的主體(body)可以是運算式,也可以是語句塊。

3.Lambda運算式傳入的實參將參與類型推斷,以及方法重載辨析。

4.Lambda運算式運算式和運算式體可以被轉換成運算式樹狀架構。

 

Lambda運算式與委託類型

Lambda運算式L可以被轉換成委託類型D,需要滿足以下條件:

1.L和D擁有相同的參數個數

2.L參數類型要與D參數類型相同。注意隱式類型要參與類型辨析。

3.D的傳回型別與L相同,無論L是運算式,還是語句塊。

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.