Lambda 表达式是一种简洁、灵活的匿名函数表示法。它们允许我们定义短小的内联函数,而无需显式声明完整的函数或方法。Lambda 表达式在LINQ查询、事件处理器、委托调用等场景中非常有用。
语法
Lambda 表达式的基本语法是 (input-parameters) => expression-body。其中,input-parameters 是参数列表(可以为空),=> 是Lambda运算符,expression-body 是包含Lambda表达式的主体。
// 无参数的Lambda表达式
Func<int> getZero = () => 0;
// 带有单个参数的Lambda表达式
Func<int, bool> isEven = x => x % 2 == 0;
// 带有多个参数的Lambda表达式
Func<int, int, int> add = (x, y) => x + y;
类型
Lambda 表达式具有隐式类型,由编译器根据上下文推断。但是,我们也可以使用委托或Func/Action类型来显式指定Lambda表达式的类型。
使用场景
LINQ 查询
定义筛选、排序和转换数据的逻辑。
事件处理器
可以用作事件处理器,特别是当事件处理逻辑很简短时。
button.Click += (sender, e) => { Console.WriteLine("Button clicked!"); };
委托调用
可以直接赋值给委托变量,从而简化委托的调用。
Func<int, int> square = x => x * x;
int result = square(5); // result 为 25