1. 程式人生 > 程式設計 >C# lambda表示式原理定義及例項詳解

C# lambda表示式原理定義及例項詳解

定義:"Lambda表示式"是一個匿名函式,是一種高效的類似於函數語言程式設計的表示式。

好處:Lambda簡化了匿名委託的使用,減少開發中需要編寫的程式碼量。

寫法:所有Lambda表示式都使用Lambda運算子=>,該運算子讀作"goes to"。Lambda運算子的左邊是輸入引數(如果有),右邊是表示式或語句塊。Lambda表示式x => x * x讀作"x goes to x times x"。

注:(左邊)輸入引數為1個時可以省略小括號,(右邊)表示式只有一句時可以省略大括號和return語句

具體的語法形式如下。

訪問修飾符 修飾符 返回值型別 方法名(引數列表) => 表示式;

public static int Add(int a,int b) => a + b;

一般lambda表示式用於建立委託或表示式樹型別。

delegate int del(int i);

del myDelegate = x => x*x; //這裡的x代表的就是int型別的引數,c#會自動對其鎖定型別。

Lambda的本質就是方法(匿名方法)。

閉包

通過lambda表示式可以訪問lambda表示式塊外的變數,這稱為閉包。

int lamValue = 5;

Func<int,int> sum = x => x+lamValue;

這樣做會有危險,因為當外部變數的值變動時,也會影響sum的結果。

lambda內部實現過程

編譯器會建立一個匿名類,它有一個建構函式來傳遞外部變數。

public class AnonymousClass{
  public int lamValue;
  public AnonymousClass(int lamValue){
    this.lamValue = lamValue;
  }
  public int AnonymousMethod(int x) => x+lamValue;
}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。