本文将系统解析Lambda表达式的演变历程、核心语法和实战应用,帮助开发者彻底掌握这一革命性特性:
MyDel del = delegate(int x) { return x + 1; }; // 原始匿名方法
Lambda表达式通过类型推断和语法简化,解决了上述问题,使代码更符合人类直觉。
通过对比演示代码的演变过程:
// 原始匿名方法
MyDel del = delegate(int x) { return x + 1; };
// 第1步:删除delegate关键字
MyDel le1 = (int x) => { return x + 1; };
// 第2步:省略参数类型(编译器推断)
MyDel le2 = (x) => { return x + 1; };
// 第3步:单参数时省略括号
MyDel le3 = x => { return x + 1; };
// 第4步:单表达式时省略return和大括号
MyDel le4 = x => x + 1; // 终极精简形态
// 编译器根据委托类型自动推断x为int
Func<int, int> square = x => x * x;
当主体为单行表达式时:
var names = users.Where(u => u.Age > 18)
.OrderBy(u => u.LastName)
.Select(u => u.FullName);
// 传统方式
button.Click += delegate(object s, EventArgs e) { ... };
// Lambda方式
button.Click += (s, e) => MessageBox.Show("Clicked!");
await Task.Run(() => {
// 后台执行复杂计算
var result = HeavyCalculation(42);
return result * 2;
});
代码更接近数学表达式(如:f(x) = x²)
支持闭包捕获外部变量:
int factor = 3;
Func<int, int> multiplier = n => n * factor;
Lambda表达式不仅是语法糖,更是编程思维的进化。它通过:
最终实现了意图优先的编码体验。掌握Lambda表达式,将使你的代码跨入简洁、高效、易维护的新纪元!