C# lambda表示式原理定義及例項詳解
阿新 • • 發佈:2020-07-15
定義:"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; }
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。