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

C# 3.0 特性之 Lambda 表達式(一):從命名方法、匿名方法到 Lambda 的演進歷程

     編輯:關於C語言

參考來源

本文內容與範例參考自 Joseph C. Rattz, Jr. 著《Pro LINQ》。

Lambda 歷史淵源

  • 最早見於 LISP 語言。
  • 1936 年美國數學家 Alonzo Church 形式化 λ 演算。
  • 為描述演算法提供簡便手段。

演進三階段

階段一:命名方法 + 委派

public class Common
{
    public delegate bool IntFilter(int i);
    public static int[] FilterArrayOfInt(int[] ints, IntFilter filter)
    {
        var list = new ArrayList();
        foreach (int i in ints) if (filter(i)) list.Add(i);
        return (int[])list.ToArray(typeof(int));
    }
}

public class Application
{
    public static bool IsOdd(int i) => (i & 1) == 1; // 命名方法
}

int[] oddNums = Common.FilterArrayOfInt(nums, Application.IsOdd);

優點:複用性強。缺點:為每個邏輯建立獨立方法,結構分散。

階段二:匿名方法

int[] oddNums = Common.FilterArrayOfInt(nums,
    delegate(int i) { return (i & 1) == 1; });
  • 內聯代碼,無需命名。
  • 適合一次性邏輯,簡化結構。
  • 缺點:語法冗長(delegate/return/{ }/;),複雜邏輯可讀性差。

階段三:Lambda 表達式

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

極致簡潔,保留完整語意,成為 LINQ 查詢標準寫法。

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