自.Net 2.0以来,.Net IL一直在改变吗?

时间:2009-06-07 07:35:43

标签: .net history cil

我之前听说过.Net 3.5没有对它编译的IL进行任何更改。在考虑了我所知道的所有编译器功能之后,实际上看起来它们都可以在同一个旧IL中实现,但我找不到官方来源来证实这一说法。这是真的吗?

3 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:0)

自.NET 2.0以来,发货CLR(版本2.0.50727)没有变化,因此您的IL完全相同。 (另见this SO QA

答案 2 :(得分:0)

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

  • 自动属性
  • 扩展方法(需要一点点肮脏的技巧)
  • 对象初始值设定项
  • 类型推断(var keyword)
  • Lambda表达式