複製鏈接
請複製以下鏈接發送給好友

Lambda

(計算機編程語言)

鎖定
Lambda是計算機編程語言,Lambda表達式是一個匿名函數,它可以包含表達式和語句,並且可用於創建委託或表達式目錄樹類型。
外文名
Lambda
類    別
計算機編程語言
Lambda 表達式  
Lambda 表達式”是一個匿名函數,它可以包含表達式和語句,並且可用於創建委託或表達式目錄樹類型。
所有 Lambda 表達式都使用 Lambda 運算符 =>,該運算符讀為“goes to”。該 Lambda 運算符的左邊是輸入參數(如果有),右邊包含表達式或語句塊。Lambda 表達式 x => x * x 讀作“x goes to x times x”。可以將此表達式分配給委託類型,如下所示:
delegate int del(int i);del myDelegate = x => x * x;int j = myDelegate(5); //j = 25
創建表達式目錄樹類型:
複製
using System.Linq.Expressions;// ...Expression<del> = x => x * x;
=> 運算符具有與賦值運算符 (=) 相同的優先級,並且是右結合運算符。
Lambda 用在基於方法的 LINQ 查詢中,作為諸如 Where 和 Where 等標準查詢運算符方法的參數。
使用基於方法的語法在 Enumerable 類中調用 Where 方法時(像在 LINQ to Objects 和 LINQ to XML 中那樣),參數是委託類型 System.Func<T, TResult>。使用 Lambda 表達式創建委託最為方便。例如,當您在 System.Linq.Queryable 類中調用相同的方法時(像在 LINQ to SQL 中那樣),則參數類型是System.Linq.Expressions.Expression<Func>,其中 Func 是包含至多五個輸入參數的任何 Func 委託。同樣,Lambda 表達式只是一種用於構造表達式目錄樹的非常簡練的方式。儘管事實上通過 Lambda 創建的對象的類型是不同的,但 Lambda 使得 Where 調用看起來類似。
在前面的示例中,請注意委託簽名具有一個 int 類型的隱式類型輸入參數,並返回 int。可以將 Lambda 表達式轉換為該類型的委託,因為該表達式也具有一個輸入參數 (x),以及一個編譯器可隱式轉換為 int 類型的返回值。(以下幾節中將對類型推理進行詳細討論。)使用輸入參數 5 調用委託時,它將返回結果 25。
isas 運算符的左側不允許使用 Lambda。