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

.NET 3.x 新特性:Lambda 表達式入門

     編輯:關於C語言

Lambda 運算子 =>

Lambda 表達式由 C# 2.0 匿名方法演進而來,是 LINQ 的核心基礎。語法:參數 => 運算式。

實體類別與資料初始化

public class Person
{
    public string Name { get; set; }
    public string NickName { get; set; }
    public int Age { get; set; }
}

List<Person> people = new List<Person>
{
    new Person { Name = "小兵", NickName = "網魂小兵", Age = 23 },
    new Person { Name = "青青", NickName = "QQing", Age = 22 }
};

Lambda 與擴充方法應用

// 取得 Age=23 的 Person
IEnumerable<Person> results = people.Where(p => p.Age == 23);

// 計算平均年齡
int perAge = people.Average(p => p.Age);

對比 C# 2.0 匿名方法寫法

IEnumerable<Person> results = people.Where(delegate(Person p) { return p.Age == 23; });
int perAge = people.Sum(delegate(Person p) { return p.Age; });

Lambda 更簡潔,編譯器自動推斷型別。

Where 擴充方法原始碼剖析

public static IEnumerable<TSource> Where<TSource>(
    this IEnumerable<TSource> source, Func<TSource, bool> predicate)
{
    foreach (TSource s in source)
        if (predicate(s)) yield return s;
}

Func<TSource, bool> 為委托,最後一個型別參數為回傳值,前面為輸入參數。

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