首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

Lambda 表達式入門:從委派演進到函數式語法

     編輯:關於C語言

什麼是 Lambda 表達式?

Lambda 表達式是 C# 3.0 引入的語法糖,為編寫匿名方法提供更簡潔、函數式的句法。其本質仍是委派,只是寫法更直觀。

委派演進歷程

C# 1.0:具名方法 + 委派實例

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

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

static void Main()
{
    Calculate calc = new Calculate(Add);
    Console.WriteLine(calc(3, 4)); // 7
}

C# 2.0:匿名方法

Calculate calc = delegate(int a, int b) { return a + b; };

C# 3.0:Lambda 表達式

// 完整語法
Calculate calc = (int a, int b) => { return a + b; };

// 型別推斷 + 隱含 return
Calculate calc = (a, b) => a + b;

Lambda 的兩種形式

  • 運算式 Lambda:`x => x * 2` —— 主體為單一運算式,隱含回傳。
  • 陳述式 Lambda:`x => { var t = x * 2; return t; }` —— 主體為區塊,需显式 return。

為什麼要用 Lambda?

  1. 簡潔:減少委派/匿名方法的樣板程式碼。
  2. 型別推斷:編譯器自動推導參數與回傳型別。
  3. 閉包:可捕捉外部區域變數,生命週期延長至委派存活期間。
  4. LINQ 基石:標準查詢運算子(Where、Select 等)皆接受 Func<T, bool> 等委派,Lambda 讓查詢語法極度可讀。

進階:運算式樹

將 Lambda 指派給 Expression<Func<T, TResult>>,編譯器會產生運算式樹(AST),而非 IL。這使得程式碼可在執行時被分析、修改、轉譯為 SQL(如 Entity Framework)或動態編譯為高效能委派。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved