使用匿名方法在.net 2.0中使用lambda表达式

时间:2014-09-03 10:49:39

标签: vb.net syntax lambda

此问题与Visual Basic .NET 2010

有关

好的,所以我在我的代码中使用lambda表达式,我需要编译它以定位.net框架的2.0版本。我将无法使用LINQ,因为它是3.0及更高版本,但我认为可以在代码中使用匿名方法来允许一些lambda表达式。

所以说我使用的代码如下:

AsyncOperation.Post(Sub(x) Something(x), Nothing)

匿名方法支持这种语法会是什么样的?

1 个答案:

答案 0 :(得分:2)

C#支持匿名方法和lambda表达式。一般来说,它们都有相同的目的,但它们的语法和它们的工作方式是不同的。另一方面,VB.NET只支持lambda表达式。它不支持任何等同于C#的匿名方法。但是,由于用于lambda表达式的VB.NET语法更接近于匿名方法的C#语法,因此人们错误地将它们称为"匿名方法"在VB.NET中,即使它们实际上是lambda表达式。

MSIL本身并不支持Lambda表达式。 VB.NET编译器支持它们,它构建必要的MSIL代码以完成所需的任务。因此,即使在3.5版本的VB.NET编译器之前没有添加lambda表达式,也不需要3.5版本的框架来运行从lambda表达式编译的MSIL代码。这意味着,只要您使用3.5或更高版本的编译器编译VB.NET代码,即使使用lambda表达式,也可以定位2.0版本的框架。

由于Visual Studio始终使用最高版本的编译器,因此当您使用Visual Studio 2010时,它将使用3.5版本编译器,即使您定位的是早期版本的框架。所有这些的最新成果是,当您使用Visual Studio 2010(或更高版本)时,即使您定位2.0框架,也可以使用lambda表达式和自动属性等内容。