在一些数组的方法,有些方法需要传递一个方法进行计算,但是这个方法可能只需要使用一次,将他封装到
类中会比较麻烦且没必要,这时候就可以使用lambda表达式了。lambda表达式可以很方便的创建一个方法
创建方式
lambda可以使用两种方式来创建
// 表达式lambda,会自动返回表达式的执行结果,只能写一句表达式
// (输入参数) => 表达式
Func<int, int, bool> funName = (int v1, int v2) => v1 == v2;
Console.WriteLine(funName(1, 2)); // false
funName(1, 1); // true
// 语句lambda,不会自动返回结果,需要使用return返回结果
Func<int, int, bool> funName = (int v1, int v2) => {
return v1 == v2;
}
// 可以省略表达式中的参数类型
Func<int, int, bool> funName = (v1, v2) => v1 == v2;
Func<int, int, bool> funName = (v1, v2) => {
return v1 == v2;
}
输入参数
// 如果没有参数,可以只写一个 ()
Func<bool> funName = () => true;
// 如果只有一个参数,可以省略小括号
Func<int, bool> funName = (v) => v >= 18;
当作参数的lambda表达式
有些方法需要传递一个方法作为参数,这种时候就可以使用lambda表达式创建一个方法进行传递
int[] a = {1,2,3};
// 方法的写法
Array.Find(a, FindTwo);
public bool FindTwo(int x)
{
return x >= 2;
}
// lambda表达式写法
Array.Find(a, x => x >= 2);
Array.Find(a, x => {
return x >= 2;
});