Lambda 表示式的簡介及形成過程

2021-06-28 08:39:55 字數 1582 閱讀 5716

lambda 表示式的簡介及形成過程

c#的lambda表示式是一種"語法糖",使用 lambda 運算子 =>,該運算子讀為「goes to」。語法如下:

形參列表=>函式體

函式體多於一條語句的可用大括號括起。

要了解lambda表示式,首先就要了解什麼是委託,委託(delegate)是一種引用型別.簡單講,委託就是乙個函式指標.先看乙個例子

//宣告乙個委託

public delegate int delegateadd(int a, int b);

public class a

}//入口類

public class b

}上面是乙個非常簡單的例子,具體的實現步驟:

1、 先宣告個委託例項 ;

2、然後提供要處理的方法;

3、再例項化委託(把委託看作是類的話,例項化委託就不難理解了,其引數是要處理的方法,這裡的方法 不用加括號,例項化的過程就是裝載方法的過程,就好像需要引數的建構函式一樣)例項化後的委託物件就好比是c++中的指標,它本身就是封裝了方法的物件;

4、最後我們呼叫委託物件就好比是呼叫了被封裝方法本身,呼叫時的引數也就傳給了被封裝的方法。

5、需要注意的是 所宣告的委託無論是 引數個數,引數型別,返回值型別 都要和所要封裝的方法保持一致,當呼叫委託例項物件時,所傳入的引數也要保持一致 ,否則會出現錯誤。 

以上例項是定義了乙個a.add()的方法.但是還有一種方法,就是先不定義,在例項化委託的時候,直接定義乙個匿名方法.則以上例項變成了以下**

public delegate int delegateadd(int a, int b);

//入口類

public class b

);//呼叫委託

int sum = mdh(2, 2);

console.writeline(sum.tostring());}}

以上方法就是做了一步的改進,使用了匿名方法,就不用在外部在定義方法了.

進一步的優化以下語句:

delegateadd mdh = new delegateadd(delegate(int a,int b));

1) 省略了 new delegateadd

delegateadd mdh = delegate(int a,int b);

2) 省略了關鍵字 delegate,並加上符號 =>

delegateadd mdh = (int a,int b)=>;

3) 省略引數型別

delegateadd mdh = (a,b)=>;

4) 省略可以省略的括號,return 等,最終形成lambda表示式

delegateadd mdh = (a,b)=>a+b+3;

再舉個系統常用的委託:func. 如下:

1)new func(delegate(string str))  

2)delegate(string str)

3)(string str)=>

4)(string str)=>str.length;

5)(str)=>str.length;

6)str=>str.length;

lambda表示式 lambda表示式

1.概述 c 11 中的 lambda 表示式用於定義並建立匿名的函式物件,以簡化程式設計工作。lambda 的語法形式如下 函式物件引數 操作符過載函式引數 mutable 或 exception 宣告 返回值型別可以看到,lambda 主要分為五個部分 函式物件引數 操作符過載函式引數 muta...

Lambda 表示式 格式的簡介

lambda 表示式的標準格式 有三部分組成 a 一些引數 0,1 2,n b 乙個箭頭 c 一段 格式 引數列表 箭頭 格式說明 介面中的抽象方法,引數列表可以沒有引數,空著.有引數就寫出引數,多個引數 用,隔開 傳遞的意思,把方法中的引數傳遞給方法體 重寫介面的抽象方法中的方法體.示例 1 ne...

Lambda表示式的簡介和演變

只能拿到final的資料,迴圈裡的i是拿不到的,要定義final,jdk1.8只要不改,就是final。函式式介面 函式式介面可用lambda表示式 介面 public inte ce ilike普通類 public class like implements ilike 先是通覽各種傳入方法 pu...