[英]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.