如果我使用Visual Studio 2008并且针对.NET 2.0应用程序,我是否仍然可以使用Lambda表达式?我的理解是Lambda表达式是编译器内置的功能,而不是框架,因此我的结论是我可以在.NET 2.0应用程序中使用Lambda。请问有人能告诉我这是否正确吗?
如果我使用Visual Studio 2008并且针对.NET 2.0应用程序,我是否仍然可以使用Lambda表达式?我的理解是Lambda表达式是编译器内置的功能,而不是框架,因此我的结论是我可以在.NET 2.0应用程序中使用Lambda。请问有人能告诉我这是否正确吗?
是的,完全支持。只要不建立表达式树或引用System.Core、System.Xml.Linq等库,就可以在下游2.0应用程序中使用Lambda表达式。这也适用于VS2008(VB9)引入的任何其他编译器功能。
编辑
一些答案错误地声明Lambda表达式是3.5或3.0功能。Lambda表达式是编译器功能,而不是框架功能。它们无需框架支持即可正常运行,并且在针对2.0的应用程序中使用它们是完全合法的。
唯一可能有问题的地方是如果将Lambda作为表达式树使用。表达式树既是编译器又是框架功能,需要3.5才能正确运行。但是,您必须努力才能实现此操作,因为我们积极尝试防止它发生。
是的,你说得对。在匿名方法的位置上可以使用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 中并不存在。
它不起作用。使用Linq需要System.Linq成为框架程序集的一部分,而.NET 2.0没有。