0

我的问题与此类似,但我想知道是否可以在旧版本的 .NET 中使用不同版本的 C#。在我看来,这一定是可能的,因为例如,Lambda 本身与框架无关,它是 C#(和 VB,但我在这里只谈论 C#)。

问题是,我无法对此进行测试,因为只有 VS 2005 在工作,而且我的家用电脑坏了。

那么,在 VS 2010/2012 中创建 .NET 2.0 项目时,我可以使用 lambda's / Linq 等吗?

4

4 回答 4

4

那么,在 VS 2010/2012 中创建 .NET 2.0 项目时,我可以使用 lamda 的 / Linq 等吗?

我有一页正是这种事情。有些功能是特定于框架(或特定于 CLR)的,有些则不是。

例如,您可以毫无问题地使用 .NET 2.0 的 lambda 表达式、匿名类型和自动实现的属性。

如果您提供替代实现,例如LINQBridge ,则可以使用 LINQ to Objects 。其他 LINQ 提供程序(LINQ to SQL 等)显然可以使用 Mono 中的库,但如果可能的话,我个人宁愿升级到更高版本的框架。

您将无法使用 C# 4 中的动态类型,因为它需要仅存在于 .NET 4 中的类型,而且我认为这些类型不容易以兼容的方式向后移植。(这可能是可能的,因为至少一个适用于 .NET 3.5 的 DLR 版本,但它是否与 C# 4 编译器配合得很好是另一回事。)

于 2012-10-01T08:48:15.240 回答
1

如果您将目标框架设置为 2.0 并使用 Visual Studio 2010,则可以使用 Lambda 表达式。但是您不能开箱即用地使用 LINQ,因为该框架是在 .Net 3.5 中引入的

你应该看到这篇文章:Jon Skeet 的 Untangling the Versions

于 2012-10-01T08:46:33.070 回答
0

语言版本和框架版本实际上是捆绑在一起的,Visual Studio 还会根据项目设置确定哪些功能可用。

对于 .NET 2.0 项目,您将无法使用 LINQ,因为这将绑定到 C# 2.0 而不是 C# 3.0(这是引入 LINQ 的时候,扩展方法也是如此)。

请注意,3.0 和 3.5 框架使用 2.0运行时

于 2012-10-01T08:47:54.260 回答
0

有语言和编译器,还有 CLR。您可以在 CLR 2.0 上运行 .NET 2.0、3.0 和 3.5。您不能在 CLR 2.0 上使用 .NET 4 功能。

Thus, you can set your project to .NET 3.5, compile it on a machine with .NET 3.5 and run it on a machine with .NET 2.0.

于 2012-10-01T08:49:40.313 回答