int[] oddNums = // using named method Common.FilterArrayOfInts(nums, Application.IsOdd); int[] oddNums = // using anonymous method Common.FilterArrayOfInts(nums, delegate(int i){return((i & 1) == 1);}); int[] oddNums = // using lambda expression Common.FilterArrayOfInts(nums, i => ((i & 1) == 1));
第一种写法是最传统的。这是传入的方法定义。可以看到第二个参数是个委托。(有点像C++里面的函数指针)
public class Application { public static bool IsOdd(int i) { return ((i & 1) == 1); } }
第二种写法是匿名委托。
而第三种写法则是lambda expression。这三种方法功能完全一致。写法不同而已。因此,理解的lambda expression其实就是个匿名委托的简单写法。他的形式就是 x => x。如果传入的是两个参数,那么形式为(x,y)=>x==y。