我不明白这是如何工作的 – 我正在使用VS2008并使用像var关键字这样的3.0语言功能.
然而,我可以编译并运行2.0框架版本
怎么可能?
编辑:是否有一个网站定义CLR,框架和语言功能和向后兼容性 – 我很困惑所有这些
解决方法
一些语言功能只是编译器是智能的 – var就是其中之一.编译后的代码没有迹象表明变量是通过var声明的.
其他功能(例如扩展方法)需要框架的支持.扩展方法通过ExtensionAttribute识别和公布.同样,表达式树需要Expression类及其子类.
其他一些功能也需要CLR支持–C#2中的泛型是最明显的例子. C#3中没有任何功能完全需要CLR支持; .NET 3.5附带一个Service Pack到CLR,但没有重大更改.我怀疑有一些极端情况,v2 CLR之前会遇到一些表达式树的问题. (我认为DynamicMethod在内部发生了一些变化,虽然我不记得细节.)可能还有一些可验证的调整.