文章教程

3.7lambda表达式

8/31/2020 9:37:14 PM 人评论 次浏览

3.7 lambda表达式

lambda表达式是一个可用于创建委托或表达式树类型的匿名函数。通过使用lambda表达式,可以写入作为参数或返回为函数调用值的本地函数。lambda简化了开发中需要编写的代码量,它可以包含表达式和语句,并且可用于创建委托或表达式目录树类型,支持带有可绑定到委托或表达式树的输入参数的内联表达式。

3.7.1 理解lambda表达式

对于C# lambda的概念前面介绍了,现在作为Delegate方式进行使用,C# lambda表达式使代码简洁,那么依托外部条件如何动态构建C# lambda表达式呢?下面先用简单代码初步描述表达式的意义,代码如下。

alt

调用代码如下,首先调用了对象的方法,然后获得对象中的值,最后输出这些值,代码如下。

alt

调用方法输出结果如图3-21所示。

alt

图3-21 调用方法后对象的值发生改变

3.7.2 剖析lambda表达式

上面示例简单演示了lambda表达式的概念,下面详细剖析Lambda表达式的结构。简单C# lambda表达式的构成如下。

i => i > 5

“i”被称为Parameter,“i > 5”是Body,可以对Body进一步分解,那么“i > 5”分别包含参数(i)、操作符(>)及一个常数(5)。所有这些通过特定顺序的组合,构建一个完整的Lambda表达式。

下面实例演示如何动态地构建C# lambda表达式。

alt

前面简单介绍了几种lambda表达式,下面介绍lambda表达式中使用到的多语句块。

3.7.3 在lambda中使用多语句块

为了更好地理解lambda表达式,在原来的代码中修改了部分程序,并添加了部分代码,如下所示。

alt

在上面的代码中定义了一个模板类,在类中添加了一个泛类的集合和一个构造函数。构造函数中对泛类的集合做了添加等操作,并且使用lambda表达式的赋值方式为泛合重新赋值。

3.7.4 多参数的lambda表达式

下面代码为lambda表达式添一个参数。

alt

这里首先定义一个委托类型,这个委托类型需要一个学生姓名为参数,在删除学生时传递一个学生姓名为参数,在调用时可以直接传递一个字符串的参数过去,如果没有参数可以用空格表示,在上面的示例中也可以不使用委托传递参数,这样比较简洁。

教程类别