一、Lambda 表达式的作用 Lambda 表达式是一种匿名函数的简洁写法,用于快速定义委托、事件或 LINQ 查询等场景。它能替代传统的匿名方法,使代码更简洁。
二、基础语法 Lambda 表达式语法:(参数) => 表达式或代码块
示例 1:无参数 AI检测代码解析 // 传统写法 Action printHello = delegate { Console.WriteLine("Hello"); };
// Lambda 写法 Action printHelloLambda = () => Console.WriteLine("Hello");
示例 2:单参数 AI检测代码解析 // 传统写法 Func<int, int> square = delegate (int x) { return x * x; };
// Lambda 写法 Func<int, int> squareLambda = x => x * x;
示例 3:多参数 AI检测代码解析 // 传统写法 Func<int, int, int> add = delegate (int a, int b) { return a + b; };
// Lambda 写法 Func<int, int, int> addLambda = (a, b) => a + b;
三、常见应用场景
- 集合操作(LINQ) AI检测代码解析 List numbers = new List { 1, 2, 3, 4, 5 };
// 筛选偶数 var evenNumbers = numbers.Where(n => n % 2 == 0);
// 转换为平方 var squares = numbers.Select(x => x * x); 1. 2. 3. 4. 5. 6. 7. 2. 事件处理 AI检测代码解析 button.Click += (sender, e) => { MessageBox.Show("Button clicked!"); };
- 委托简化 AI检测代码解析 // 定义一个委托 public delegate int MathOperation(int a, int b);
// 使用 Lambda 实现 MathOperation multiply = (a, b) => a * b; int result = multiply(3, 4); // 返回 12 1. 2. 3. 4. 5. 6. 四、多行代码块 如果逻辑复杂,可以使用 { } 包裹代码块:
AI检测代码解析 Func<int, int, string> compare = (a, b) => { if (a > b) return "{a} 小于 {b}"; else return $"{a} 等于 {b}"; };
Console.WriteLine(compare(5, 3)); // 输出 "5 大于 3"
五、与委托类型的对应 Lambda 表达式通常与以下类型配合使用:
Action:无返回值的方法委托(最多 16 参数)。 Func:有返回值的方法委托(最后一个泛型参数为返回值类型)。 示例: AI检测代码解析 // Action(无返回值) Action log = message => Console.WriteLine($"[LOG] {message}");
// Func(有返回值) Func<int, int, bool> isEqual = (a, b) => a == b;
六、注意事项 类型推断:Lambda 参数类型通常可省略(除非编译器无法推断)。 AI检测代码解析 // 明确指定类型 Func<int, int, int> add = (int a, int b) => a + b;
闭包问题:Lambda 会捕获外部变量(可能导致意外行为)。 AI检测代码解析 int factor = 2; Func<int, int> multiplier = x => x * factor; factor = 3; // 后续调用 multiplier(5) 会返回 15
七、完整示例 AI检测代码解析 using System; using System.Collections.Generic; using System.Linq;
class Program { static void Main() { // 示例 1:集合筛选 List numbers = new List { 1, 2, 3, 4, 5 }; var filtered = numbers.Where(n => n > 3); // 4, 5
// 示例 2:自定义委托
Func<string, string> greet = name => $"Hello, {name}!";
Console.WriteLine(greet("Alice")); // 输出 Hello, Alice!
// 示例 3:多行 Lambda
Action<int, int> printMax = (a, b) =>
{
int max = a > b ? a : b;
Console.WriteLine($"最大值是 {max}");
};
printMax(10, 20); // 输出 最大值是 20
}
}
总结 场景
Lambda 写法
传统写法
单行表达式
x => x * x
delegate(int x) { ... }
多行代码块
(a, b) => { ... }
匿名方法 + 代码块
集合操作(LINQ)
Where(n => n % 2 == 0)
循环 + 条件判断
Lambda 表达式是 C# 中提升代码可读性和简洁性的重要工具,熟练掌握后可大幅简化代码! 文章来源:ximaonetwork.cn