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