C# 3.0 目标 2.0

标签 c#

我不明白它是如何工作的 - 我正在使用 VS2008 并使用 var 关键字等 3.0 语言功能。

但我可以针对 2.0 框架版本进行编译和运行

这怎么可能?

编辑:是否有定义 CLR、框架和语言功能以及向后兼容性的网站 - 我对所有这些感到很困惑

最佳答案

有些语言特性只是编译器很聪明——var 就是其中之一。编译后的代码没有任何痕迹表明该变量是通过 var 声明的。

其他功能(例如扩展方法)需要框架的支持。扩展方法通过 ExtensionAttribute 识别和通告。同样,表达式树需要 Expression 类及其子类。

一些其他功能也需要 CLR 支持 - C# 2 中的泛型是最明显的例子。 C# 3 中的所有功能都不需要 CLR 支持; .NET 3.5 附带了一个 CLR 服务包,但没有重大变化。我怀疑在一些极端情况下,v2 CLR 之前的某些表达式树会出现问题。 (我认为 DynamicMethod 在内部发生了一些变化,虽然我不记得细节了。)也可能有一些可验证性调整。

我有一个 article它描述了在面向 .NET 2 时可以使用 C# 3 中的哪些功能。我将很快扩展它以包括 C# 4。

关于C# 3.0 目标 2.0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3336622/

相关文章:

c# - 使用资源字典:中定义的样式

c# - RouteConfig 设置接受可选参数

c# - 如果未设置,ListItem.Value 将覆盖 Text

c# - 将 Batch shell 脚本输出读入 C# .Net 程序

c# - 什么是处理异常的最佳方法以及如何在asp.net中处理它们

c# - 单击表单上任何数据 GridView 的保存按钮时提交当前脏单元格

c# - 在数据表上使用通用列表会减少性能开销吗?

c# - 使用 devexpress 15.2 c# 在 gridview 中更改焦点后,已编辑的单元格被重置

c# - 保存对象/序列化

c# - 在 WPF 中使 GridView 保持最新