在C#2.0中引入了匿名方法,然而他的语法有一些冗长,于是在C#3.0中引入了Lambda表达式。
在匿名方法的语法中,delegate关键字有点多余,因为编译器已经知道我们在将方法赋值给委托。我们可以很容易地通过如下步骤将匿名方法转换为Lambda表达式:
*删除delegate关键字;
*在参数列表和匿名方法主体之间放置Lanbda运算符=>。Lambda运算符读作"goes to"。
下面代码演示了这种转换。第一行演示了将匿名方法赋值给变量del。第二行演示了同样的匿名方法在被转换成Lambda表达式后,赋值给了变量bel。
MyDel del=delegata(int x){return x+1;};//匿名方法
MyDel bel= (int x) => {return x+1;};//Lambda表达式
这种简单的转换少了一些多余的东西,看上去更简洁了,但是只省了6个字符。然而编译器可以推断出更多信息,所以我们可以进一步简化Lambda表达式:
MyDel del=delegata(int x){return x+1;};//匿名方法
MyDel bel= (int x) => {return x+1;};//Lambda表达式
MyDel bel= (x) => {return x+1;};//Lambda表达式
MyDel bel= x => {return x+1;};//Lambda表达式
MyDel bel= x => x+1;//Lambda表达式