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

C# 3.0 特性探秘 (七):匿名方法與 Lambda 運算式對比、表達式樹前瞻

     編輯:關於C語言

Lambda 與匿名方法編譯後等價

反編譯發現兩者生成相同委派結構。Lambda 輸入參數對應 delegate 參數,編譯器推斷型別故可省略宣告。

Lambda 形式分類


// 運算式主體 (隱含返回)
x => x + 1
// 陳述式主體 (需大括號、明確 return)
x => { return x + 1; }
// 帶型別參數
(int x) => x + 1
// 多參數
(x, y) => x + y
// 無參
() => 1

表達式樹關鍵角色

Lambda 可編譯為 Expression<TDelegate>,構建表達式樹,為 LINQ 提供者 (如 LINQ to SQL) 解析轉譯 SQL 的基礎。此處不深入展開。

Lambda 歷史淵源

  • λ 演算 (Alonzo Church) → 函數式語言 (Lisp、Haskell)。
  • 圖靈機模型主導工業界,函數式長居象牙塔。
  • 近年「復古潮」:函數式特性回歸主流語言 (C# 3.0 Lambda、Java 8 Stream、C++11 lambda)。
  • 優勢:函數為一等公民、無副作用、易並行、解決命令式難題。

C# 透過 delegate (2.0) → Lambda (3.0) 實現函數式風格:方法作參數、層層嵌套、類型推斷。

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