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

C# 3.0 特性之 Lambda 表達式(二):語法形式、委派相容性與 LINQ 核心定位

     編輯:關於C語言

Lambda 表達式一般形式

(param1, param2, … paramN) =>
{
    statement1;
    statement2;
    …
    return return_value;
}
  • 多參數必須括號包裹。
  • => 為 Lambda 運算子(C# 專用)。
  • 語句本體需 { }、return、分號;運算式本體可省略。

委派簽章對應關係

委派定義輸入參數與回傳型別,Lambda 左側對應輸入,右側對應回傳:

delegate bool IntFilter(int i);  // 委派簽章

// Lambda 對應
i => i.Length > 0        // 輸入 int,回傳 bool
s => s.Length            // 輸入 string,回傳 int
(x, y) => x == y         // 多參數
(x, y) => { if (x>y) return x; else return y; } // 語句本體

實戰改寫:FilterArrayOfInt 使用 Lambda

delegate bool IntFilter(int i);

int[] oddNums = Common.FilterArrayOfInt(nums, i => ((i & 1) == 1));

結果與命名方法、匿名方法版本完全一致。

小結:Lambda 為 LINQ 而生

  • 可複用演算法 → 命名方法最正規。
  • 一次性演算法 → 匿名方法/Lambda 適合。
  • LINQ 查詢幾乎皆為一次性邏輯,若每個查詢寫命名方法效率極低。
  • C# 3.0 幾乎所有新特性(var、擴充方法、Lambda、匿名類型、物件初始化器)皆為 LINQ 服務。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved