天天看点

C# Lambda表达式

自C#3.0开始,就可以使用一种新语法把实现代码赋予委托:Lambda表达式。只要有委托参数类型的地方,就可以使用Lambda表达式。

Lambda表达式的语法比匿名方法简单。如果所调用的方法有参数,且不需要参数,匿名方法的语法就比较简单,因为这样不需要提供参数。

直接上一些例子,读者可以自行运行调试。

在winform编程中,我们经常给某个按钮添加Click事件,最原始的写法是直接双击按钮,生成Click事件的代码,我们就可以直接在里面写方法了。其实这是vs替我们做了很多工作,其中就有在designer.cs文件中,生成了 this.button1.Click += new System.EventHandler(this.button1_Click);这样的代码,事件要注册才能触发。

我们采用匿名委托的写法,在窗体的Form_Load事件中添加如下代码,则可以触发button1的Click事件。

再看看Lambda表达式的用法。

是不是更加简洁?

我们再看一下,从匿名方法到Lambda简写的演化过程,借一张图。

C# Lambda表达式

从这个演化过程,可以看出C#语言的发展变化过程。

下面详细演示一下Lambda的应用实例。

首先第一个实例我们应用Lambda对一个List<Student>列表进行循环、查找、排序等操作。

首先我们提供一个实体类:

然后我们初始化一个List,

那么,我们就可以先循环输出一下:

如果我们要找到年龄大于20岁的学生,可以这样:

进一步,我们按照学生的年龄进行排序:

现在,我们按照在students列表里再加一个学生:

现在要按照年龄进行分组,并统计出各个年龄阶段的人数:

再提供一个综合性的例子,这是论坛里的caozhy版主提供的一个例子。用Lambda表达式实现快速排序。