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 表达式通常与委托类型或表达式树类型一起使用。以下是两种常见的委托类型:
- Func 委托:用于有返回值的 Lambda 表达式。
- 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 表达式,以提高代码的简洁性和可维护性。
附加资源与练习
- 练习:编写一个 Lambda 表达式,计算两个字符串的长度之和。
- 深入学习:了解表达式树(Expression Trees)及其与 Lambda 表达式的关系。
- 官方文档:C# Lambda 表达式文档