C# 3.0 - Lambda

  • C# 3.0 - var 隐式类型声明
  • C# 3.0 -自动属性实现
  • C# 3.0 -对象初始化设置
  • C# 3.0 -集合初始化设置
  • C# 3.0 -匿名类型
  • C# 3.0 -扩展方法
  • C# 3.0 - partial 分部(类型)
  • C# 3.0 - Lambda
  • C# 3.0 - { get; set; } 默认值
  • C# 3.0 - { get; set; } 默认值 2
  • C# 3.0 - yield

注意是 lambda,而不是 lamda。

Lambda 最显著的标志是有个“=>”:Lambda 表达式可以看作一个函数;“=>”左边是参数,没有参数或多个参数时,使用小括号括起来;右边是函数体,必要时使用大括号括起来。

int[] arr = new int[] { 1, 2, 3, 4 };
Response.Write(arr.Count(n => n > 2)); // 2

arr.Count 有两个重载函数,其中第二个就是一个 Func,我们就是用了第二个重载函数。

上面的式子表示:数组中符合 n > 2 的项目有多少个。1、2、3、4 中,只有 3 和 4 符合大于 2 的条件,所以结果为 2。

再看一个例子:

public partial class _Default : System.Web.UI.Page
{
    delegate int Foo(int m); // 委托,台湾译为委派。
    
    protected void Page_Load(object sender, EventArgs e)
    {
        Foo foo = n => n * n;
        Foo foo2 = n => n * n * n;
        Response.Write(foo(5).ToString()); // 25
        Response.Write("<br>");
        Response.Write(foo2(5).ToString()); // 125
    }
}

如果不返回值,还可以再简单点,比如:

应用示例:霸道的 Lambda 事件处理程序表达式

  • C# 3.0 - var 隐式类型声明
  • C# 3.0 -自动属性实现
  • C# 3.0 -对象初始化设置
  • C# 3.0 -集合初始化设置
  • C# 3.0 -匿名类型
  • C# 3.0 -扩展方法
  • C# 3.0 - partial 分部(类型)
  • C# 3.0 - Lambda
  • C# 3.0 - { get; set; } 默认值
  • C# 3.0 - { get; set; } 默认值 2
  • C# 3.0 - yield

你可能感兴趣的