6

在.Net 3.5 对其编译的 IL 没有任何更改之前,我已经听说过这种说法。在考虑了我所知道的所有编译器特性之后,事实上,它们似乎都可以在同一个旧 IL 中实现,但我找不到官方来源来证实这一说法。这是真的吗?

4

3 回答 3

5

认为没有任何 IL 变化,但是CLR 实现中发生了重大变化,使动态方法更有效,允许表达式树编译等。我似乎记得围绕构建的安全性发生了变化动态方法,使生成表达式树的 lambda 表达式可以调用私有方法,即使在信任度相对较低的环境中也能正常工作。编译器知道调用私有方法是有效的,因为编译源代码的点可以访问它。但证明这一点很棘手 :) 请参阅Eric Lippert 的这篇笔记

于 2009-06-07T07:42:05.063 回答
0

自 .NET 2.0 以来,随附的 CLR(版本 2.0.50727)没有更改,因此您的 IL 是相同的。(另请参阅此 SO QA

于 2009-06-07T07:52:52.077 回答
0

..因此,如果您愿意,您可以在 .NET 2.0 项目中使用许多 .NET 3.5 功能,只要您使用最新的编译器:

  • 自动属性
  • 扩展方法(需要一些肮脏的技巧)
  • 对象初始化器
  • 类型推断(var 关键字)
  • Lambda 表达式
于 2009-06-07T10:08:34.377 回答