跳到主要内容

C# Lambda 语法

介绍

Lambda 表达式是 C# 中一种简洁的语法形式,用于表示匿名函数。它允许你以更简洁的方式编写函数,尤其是在需要传递函数作为参数时(例如在委托或 LINQ 查询中)。Lambda 表达式是 C# 中函数式编程的重要组成部分。

在本文中,我们将逐步讲解 Lambda 表达式的语法,并通过实际案例展示其应用场景。


Lambda 表达式的基本语法

Lambda 表达式的基本语法如下:

csharp
(parameters) => expression
  • parameters 是输入参数列表。如果只有一个参数,可以省略括号。
  • => 是 Lambda 运算符,读作“goes to”。
  • expression 是 Lambda 表达式的返回值。

示例 1:简单的 Lambda 表达式

以下是一个简单的 Lambda 表达式示例,它将一个整数加 1:

csharp
Func<int, int> addOne = x => x + 1;
Console.WriteLine(addOne(5)); // 输出: 6

在这个例子中:

  • x 是输入参数。
  • x + 1 是表达式,返回 x + 1 的结果。

Lambda 表达式的类型

Lambda 表达式通常与委托类型或表达式树类型一起使用。以下是两种常见的委托类型:

  1. Func 委托:用于有返回值的 Lambda 表达式。
  2. Action 委托:用于没有返回值的 Lambda 表达式。

示例 2:使用 Func 委托

csharp
Func<int, int, int> add = (x, y) => x + y;
Console.WriteLine(add(3, 5)); // 输出: 8

示例 3:使用 Action 委托

csharp
Action<string> greet = name => Console.WriteLine($"Hello, {name}!");
greet("Alice"); // 输出: Hello, Alice!

多行 Lambda 表达式

如果 Lambda 表达式需要执行多行代码,可以使用大括号 {} 包裹代码块,并使用 return 语句返回值(如果有)。

示例 4:多行 Lambda 表达式

csharp
Func<int, int, int> multiply = (x, y) =>
{
int result = x * y;
return result;
};
Console.WriteLine(multiply(4, 5)); // 输出: 20

Lambda 表达式的实际应用

Lambda 表达式在 C# 中有许多实际应用场景,尤其是在 LINQ 查询和事件处理中。

示例 5:在 LINQ 中使用 Lambda 表达式

csharp
List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };
var evenNumbers = numbers.Where(n => n % 2 == 0).ToList();
Console.WriteLine(string.Join(", ", evenNumbers)); // 输出: 2, 4

在这个例子中,n => n % 2 == 0 是一个 Lambda 表达式,用于筛选列表中的偶数。

示例 6:在事件处理中使用 Lambda 表达式

csharp
Button button = new Button();
button.Click += (sender, e) => Console.WriteLine("Button clicked!");

总结

Lambda 表达式是 C# 中一种强大的语法特性,能够简化代码并提高可读性。通过本文的学习,你应该已经掌握了 Lambda 表达式的基本语法、类型以及实际应用场景。

提示

Lambda 表达式非常适合用于简化委托和 LINQ 查询的代码。尝试在你的项目中多使用 Lambda 表达式,以提高代码的简洁性和可维护性。


附加资源与练习

  1. 练习:编写一个 Lambda 表达式,计算两个字符串的长度之和。
  2. 深入学习:了解表达式树(Expression Trees)及其与 Lambda 表达式的关系。
  3. 官方文档C# Lambda 表达式文档