LINQ 擴展方法 允許在不繼承、不重新編譯現有類型的前提下,為其「添加」實例方法。不同於傳統靜態工具類,調用語法如同真實實例方法。
static 類。static,首參數加 this 修飾符,類型即為要擴展的類型。
public static class MyExtensions
{
public static bool IsValidEmailAddress(this string s)
{
var regex = new Regex(@"^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$");
return regex.IsMatch(s);
}
}
// 使用
using MyExtensions;
string email = Request.QueryString["email"];
if (email.IsValidEmailAddress()) { /* ... */ }
System.Linq 命名空間提供大量標準查詢操作符:Where、OrderBy、Select、Sum、Average 等,作用於任意實現 IEnumerable<T> 的對象,統一了對象、XML、資料庫的查詢語法。
擴展方法是 LINQ 語法糖的基石,讓 from x in xs where ... select ... 背後的鏈式調用成為可能。