日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯網營銷解決方案
C#Lambda表達式學習筆記

C#語言還是比較常見的東西,這里我們主要介紹C# Lambda表達式,包括介紹一個Lambda就是一個delegate,一個delegate指向一個方法等方面。

創(chuàng)新互聯是一家專業(yè)提供南昌縣企業(yè)網站建設,專注與成都網站建設、網站設計、H5開發(fā)、小程序制作等業(yè)務。10年已為南昌縣眾多企業(yè)、政府機構等服務。創(chuàng)新互聯專業(yè)的建站公司優(yōu)惠進行中。

你有沒有接觸過C# Lambda表達式,有沒有覺得匿名方法這東西很不錯,減少了很多代碼阿,但是匿名方法的使用還并不人性化,什么是人性化呢?比如你可以用自然的語言將程序代碼讀出來,這樣才算人性化了。在.net 2.0中System.Collections.Generic命名空間下List里有一些新增的方法。比如Find,如果使用匿名方法我們如何調用呢:

 
 
 
 
  1. books.Find(delegate(Book book){return book.Price < 50;}); 

代碼是很簡單,但是卻無法朗讀出來,來看看C# Lambda表達式的寫法:

books.Find(book=>book.Price<50);這個C# Lambda表達式就可以這樣閱讀出來了:給你一本書,如果它的價格小于50則返回true。

好了,那我們就走進C# Lambda表達式吧:

將使用了C# Lambda表達式的程序集反編譯后,我們發(fā)現,它實際上和匿名方法沒有什么不同。Lambda的輸入參數就對應著delegate括號里面的參數,由于C# Lambda表達式可以推斷參數的類型,所以這里的參數無需聲明。

Lambda操作符讀作”Goes to”,它后面緊跟著表達式或者是語句塊(這點和匿名方法也不同,匿名方法只能使用語句塊而不能使用表達式),下面我就用實例來說明一下有那些類型的C# Lambda表達式:

 
 
 
 
  1. //x的類型省略了,編譯器可以根據上下文推斷出來,后面跟著的是表達式  
  2. x => x+1  
  3. deleage(int x){return x+1;}  
  4. //后面跟著的是語句塊  
  5. x=>{return x+1;}  
  6. delegate(int x){return x+1;}  
  7. //輸入參數也可以帶類型,帶類型后別忘記小括號哦  
  8. (int x) => x+1  
  9. delegate(int x){return x+1;}  
  10. //也可以多個輸入參數,逗號分隔,別忘記小括號  
  11. (x,y) => x+y  
  12. delegate(int x,int y){return x+y;}  
  13. //無參的也行  
  14.  
  15. () => 1  
  16.  
  17. delegate(){return 1;}  

對于C# Lambda表達式來說她的用法就是如此,但是在Lambda背后卻有很多的故事和玄機。用C# Lambda表達式可以構建表達式樹,而表達式樹對于Linq來說就像樹根對于樹一樣重要。在這里就不討論表達式樹的問題了,這個東西也不是三言兩語能夠說清楚的,等待時機成熟的時候我們再來進一步討論。

C# Lambda表達式更多閱讀

Lambda實際上源遠流長,我們現在使用的機器都是馮-諾依曼體系的,屬于圖靈機,在那之前還有一種稱作λ演算的理論,但是圖靈機由于先被實現出來,所以大行其道,λ 演算后來成就了函數式編程語言特別是Lisp,在函數式編程語言里函數是***等元素,函數的參數,函數的返回值都是函數,程序沒有變量,函數嵌套函數。而且函數式編程語言一直存在于象牙塔中,所以在工業(yè)界并沒有得到通用,不過近年來工業(yè)界比較喜歡“復古”風格,所以函數式編程語言也慢慢的走上了歷史的舞臺。函數式編程能解決一些命令式編程難以解決的問題(或者解決起來非常麻煩)。C#要做到函數風格編程怎么辦?靠原來的方法定義的方式肯定是不可行的,2.0的匿名方法從某種程序上來說解決了這個問題,但還是不夠,3.0里的Lambda終于很好的解決了,一個Lambda就是一個delegate,一個delegate指向一個方法,現在我們使用Lambda也能簡單的將方法作為參數傳遞了,還可以層層嵌套,都是很簡單的事情了。


本文標題:C#Lambda表達式學習筆記
文章地址:http://www.5511xx.com/article/cohcjsd.html