《ASP.NET 4.0从入门到精通》第3章C# 4.0语言特色,本章讨论在C# 4.0语言中许多增强的功能。首先介绍隐式类型声明,由编译器根据上下文进行类型推断,接下来讨论使用自动属性功能简化编写重复性的属性代码。对象初始化器可以简化开发人员的赋值代码,接下来讨论如何对一个现有类进行扩展的扩展方法。本节为大家介绍Lambda表达式。
3.7.1 理解Lambda表达式(2)
在这段代码中,将原本创建单独方法的过程更改为一个内联代码块。现在对Main方法进行稍加更改,来查看程序的运行结果。代码如下:
- static void Main(string[] args)
- {
- Console.WriteLine("传统的委托代码示例, 运行结果为:");
- FindListDelegate();
- Console.WriteLine("使用匿名方法的示例, 运行结果为:");
- FindListAnonymousMethod();
- }
程序的运行结果如图3.19所示。可以看到,使用匿名方法简化了代码的编写过程,而运行的结果是相同的。
![]() |
图3.19 使用匿名方法后的运行结果 |
- //使用Lambda来实现搜索过程
- static void FindListLambdaExpression()
- {
- //先创建一个泛型的List类
- List<string> list = new List<string>();
- list.AddRange(new string[] { "语言书", "软件书",
"政治", "图书", "开发人员" });- //在这里, 使用了Lambda来创建一个委托方法
- List<string> bookCategory = list.FindAll(str =>
str.EndsWith("书"));- foreach (string str in bookCategory)
- {
- Console.WriteLine("{0}\t", str);
- }
- }
在这段代码中,添加了C# 4.0的新语法str=>str.EndsWith(“书”),这就是一个Lambda表达式。现在只需要这么短短的几个字符就完成了原本需要单独创建一个方法的过程,而且语法相当简洁。同样地,将Main方法稍加更改,然后运行示例程序,代码如下所示:
- static void Main(string[] args)
- {
- Console.WriteLine("传统的委托代码示例,运行结果为:");
- FindListDelegate();
- Console.WriteLine("使用匿名方法的示例,运行结果为:");
- FindListAnonymousMethod();
- Console.WriteLine("使用Lambda的示例,运行结果为:");
- FindListLambdaExpression();
- }
按Ctrl+F5键直接运行示例程序,会发现使用Lambda之后,运行效果是相同的,如图3.20所示。
![]() |
(点击查看大图)图3.20 添加Lambda表达式之后的运行结果 |
联系客服