Lambda Expression从定义上讲是指带有“=>”符号的表达式,例如:
- x => x + 1
- (x, y) => x > y
- () => 5
- (x, y) => { return x > y; }
Lambda Expression的一个重要作用就是提供一种使用匿名方法的新语法。利用Lambda Expression表示匿名函数的一个缺点就是无法使用带out或ref关键字的参数,不过它比使用delegate关键字的表示法略为简单一点,因为无需提供参数类型,例如:
public static bool CallMethod(Func<int, bool> method)//这里需要传入的参数有点方法的指针的意思,所以下边可以传入一个方法代理
{
return method(0);
}
static void Main(string[] args)
{
CallMethod(delegate(int a) { return false; });
CallMethod(a => { return false; });
}
可见,使用Lambda Expression表示的匿名方法无需指定参数类型,因为这一切都已经交给编译器来判断了。这一点在参数类型长而复杂的情况下(例如并行库中的方法)非常重要。因此现在要不是会涉及到out/ref参数,我都会使用Lambda Expression来表示匿名方法。Lambda参数的类型可以在编译时和被Visual Studio的intellisense引擎推断出来,这意味着在编写lambda时你将获得完全的intellisense 和编译时检查 在VS中就能感受到。你压根儿没指定类型 但它可以智能提示该参数的属性