C#3.0之神奇的Lambda表示式和Lambda語句

iDotNetSpace發表於2008-09-26

     “Lambda 表示式”是一個匿名函式,它可以包含表示式和語句,並且可用於建立委託或表示式目錄樹型別。所有 Lambda 表示式都使用 Lambda 運算子 =>,該運算子讀為“goes to”。該 Lambda 運算子的左邊是輸入引數(如果有),右邊包含表示式或語句塊。Lambda 表示式 x => x * x 讀作“x goes to x times x”。可以將此表示式分配給委託型別。

     表示式在右邊的 Lambda 表示式稱為“Lambda 表示式”。 Lambda 表示式在構造表示式目錄樹時廣泛使用。Lambda 表示式返回表示式的結果,並採用以下基本形式:

<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt(input parameters) => expression

     

     Lambda 語句與 Lambda 表示式類似,只是語句括在大括號中:

<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt(input parameters) => {statement;}

 

     => 運算子具有與賦值運算子 (=) 相同的優先順序,並且是右結合運算子。

     Lambda 用在基於方法的 LINQ 查詢中,作為諸如 Where 和 Where(IQueryable, String, array<Object>[]()[]) 等標準查詢運算子方法的引數。

     在 is 或 as 運算子的左側不允許使用 Lambda。

     適用於匿名方法的所有限制也適用於 Lambda 表示式。

<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gtdelegate void Del(int x, int y);

Del d 
= (m, n) => { int r = m + n; Response.Write(r); };
d(
64); 
//result: 10

int[] numbers = { 5413986720 };
int oddNumbers = numbers.Count(n => n % 2 == 1);
//result: 5

var lessThan6 
= numbers.TakeWhile(n => n < 6);
Response.Write(lessThan6.Count());
//result: 4

delegate int del(int i);
del myDelegate 
= x => x * x;
Response.Write(myDelegate(
5); 
//result: 25

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-464474/,如需轉載,請註明出處,否則將追究法律責任。

相關文章