C#中Lambda表达式的简单理解

来源:互联网 发布:尤易软件 编辑:程序博客网 时间:2024/04/30 07:36

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中就能感受到。你压根儿没指定类型 但它可以智能提示该参数的属性

原创粉丝点击