基本上它的意思是说:“我给你这个(s,b)
”,然后你要返回给我s*b
或者其他东西,如果你使用lambda表达式,语法可能会像这样:我给你这个(s,b)
,并在语句块中对它们进行操作,例如:
{
int k = a+b;
k = Math.Blah(k);
return k;
}
一个Lambda
表达式是一个未命名的方法,它被编写在委托实例的位置上。编译器会立即将lambda表达式转换为以下两者之一:
delegate int Transformer(int i);
class Test{
static void Main(){
Transformer square = x => x*x;
Console.WriteLine(square(3));
}
}
我们可以这样重写:
delegate int Transformer(int i);
class Test{
static void Main(){
Transformer square = Square;
Console.WriteLine(square(3));
}
static int Square (int x) {return x*x;}
}
一个 lambda 表达式的形式如下:
(parameters) => expression or statement-block
在之前的例子中,只有一个参数 x,表达式是 x*x。
在我们的例子中,x 对应参数 i,表达式 x*x 对应返回类型 int,因此与 Transformer 委托兼容:
delegate int Transformer ( int i);
lambda 表达式的代码可以是语句块而不是表达式。我们可以将我们的例子重写如下:
x => {return x*x;}
表达式树是一种 Expression<T>
类型的树形结构,用于表示 lambda 表达式中的代码,并以可遍历的对象模型形式存在。这允许在运行时稍后解释 lambda 表达式(请查看 LINQ 的“查询表达式”)。