Ear*_*rlz 23 .net c# compatibility c#-4.0
我最近看到很多C#4.0的变化.我真的很喜欢其中的一些.另外,我还不想因为兼容性原因而转向.Net 4.0.
那么,是否有一个全面的新C#4.0语言功能列表可以在.Net 3.5或更低版本上运行?
例如,默认参数是否需要.NET 4.0 CLR,还是它们是编译器功能?可以使用自动属性(C#3.0特性)并仍然以.NET 2.0为目标,因为它不需要Framework支持,但不使用LINQ表达式,因为它确实需要Framework 3.5.
请不要说"当然C#4.0在.Net 3.5中不起作用,因为它更老了"
Chr*_*ows 31
4.0中的C#编译器附带了一个新的多目标功能.简短的版本是它将生成一个程序集,其中包含定义System.Object(通常是mscorlib.dll)的引用中存在的任何元数据版本.这允许您使用它来编译2.0和3.5的程序集,以及各种版本的Silverlight.引入此功能是为了支持Visual Studio 2010中的多目标.
因此,您可以使用C#4.0编译器来编译3.5程序集,并使用您想要的任何C#4功能,只要没有对4.0库的特定依赖.例如,命名参数和可选参数将正常工作,因为它们不使用任何4.0框架功能.然而,动态,但开箱即用它不适用于3.5.
这里有一篇关于这个的帖子,涵盖了基础知识.
http://blogs.msdn.com/ed_maurer/archive/2010/03/31/multi-targeting-and-the-c-and-vb-compilers.aspx
短名单(来自Ed的帖子)是:
不起作用的东西包括动态和非pia(我们在实现它们的时间方面的两个最大支出).前者需要框架支持,后者需要运行时支持.