本文內容與範例參考自 Joseph C. Rattz, Jr. 著《Pro LINQ》。
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/{ }/;),複雜邏輯可讀性差。int[] oddNums = Common.FilterArrayOfInt(nums, i => (i & 1) == 1);
極致簡潔,保留完整語意,成為 LINQ 查詢標準寫法。