一尘不染

匿名方法(C#2.0)和lambda表达式(C#3.0)有什么区别?[重复]

c#

这个问题已经在这里有了答案

委托关键字与Lambda表示法 (6个答案)

5年前关闭。

C#2.0的 匿名方法 和C#3.0的 lambda表达式 之间有什么区别?


阅读 282

收藏
2020-05-19

共1个答案

一尘不染

有关匿名方法的MSDN页面对此进行了解释

在2.0之前的C#版本中,声明委托的唯一方法是使用命名方法。C#2.0引入了匿名方法,在C#3.0和更高版本中,lambda表达式取代了匿名方法,成为编写内联代码的首选方法。但是,本主题中有关匿名方法的信息也适用于lambda表达式。在一种情况下,匿名方法提供了lambda表达式中找不到的功能。匿名方法使您可以省略参数列表,这意味着可以将匿名方法转换为具有各种签名的委托。对于lambda表达式,这是不可能的。有关特定于lambda表达式的详细信息,请参见Lambda表达式(C#编程指南)。

关于lambda表达式

Lambda表达式是一个匿名函数,可以包含表达式和语句,并且可以用于创建委托或表达式树类型。所有lambda表达式都使用lambda运算符=>,它被读为“
goes to”。lambda运算符的左侧指定输入参数(如果有),而右侧则保存表达式或语句块。读取lambda表达式x => x * x“
x达到x的x倍”。可将此表达式分配给委托类型,如下所示:

2020-05-19