繁体   English   中英

语言版本和.net版本

[英]Language version and .net version

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

问题是,我无法进行测试,因为只有VS 2005在工作并且我的家用PC坏了。

因此,在VS 2010/2012中创建.NET 2.0项目时,可以使用lambda的/ Linq等吗?

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

我有专门针对这种事情页面 一些功能是特定于框架的(或CLR特定),而某些则不是。

例如,您可以在.NET 2.0中使用lambda表达式,匿名类型和自动实现的属性,而不会出现问题。

如果提供了LINQBridge之类的替代实现,则可以使用LINQ to Objects。 使用Mono的库显然可以实现其他LINQ提供程序(LINQ to SQL等),但是我个人希望尽可能升级到该框架的更高版本。

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

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

您应该看到以下文章: Jon Skeet解开版本

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

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

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

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

因此,您可以将项目设置为.NET 3.5,在具有.NET 3.5的计算机上进行编译,然后在具有.NET 2.0的计算机上运行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM