VB.NET Lambda表达式

5

如果我使用Visual Studio 2008并且针对.NET 2.0应用程序,我是否仍然可以使用Lambda表达式?我的理解是Lambda表达式是编译器内置的功能,而不是框架,因此我的结论是我可以在.NET 2.0应用程序中使用Lambda。请问有人能告诉我这是否正确吗?

3个回答

12

是的,完全支持。只要不建立表达式树或引用System.Core、System.Xml.Linq等库,就可以在下游2.0应用程序中使用Lambda表达式。这也适用于VS2008(VB9)引入的任何其他编译器功能。

编辑

一些答案错误地声明Lambda表达式是3.5或3.0功能。Lambda表达式是编译器功能,而不是框架功能。它们无需框架支持即可正常运行,并且在针对2.0的应用程序中使用它们是完全合法的。

唯一可能有问题的地方是如果将Lambda作为表达式树使用。表达式树既是编译器又是框架功能,需要3.5才能正确运行。但是,您必须努力才能实现此操作,因为我们积极尝试防止它发生。


2

是的,你说得对。在匿名方法的位置上可以使用Lambda表达式。编译器会自动处理其余部分。请尝试以下代码:

int sum = 0;
Array.ForEach(new[] {1, 2, 3, 4}, x => sum += x);

您不能使用任何 .Net 3.5 的新功能(例如 Linq)。这样做需要添加对 System.Linq、System.Core 等的引用,而这些在 .Net 2.0 中并不存在。


-3

它不起作用。使用Linq需要System.Linq成为框架程序集的一部分,而.NET 2.0没有。


没错,丹丹说得对。另外,不,你不能只将3.5程序集放入bin文件夹中来引用它们。我已经问过了...问题在于System命名空间也发生了很多变化。 - andy
这并不是事实。使用3.5编译器(Vb9)来针对2.0应用程序进行目标设置,只要您有足够可用的LINQ方法,如Select和Where,LINQ肯定是受支持的。对于C#也是如此。 - JaredPar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接