-5
var foo1 = new SomeClass();
SomeClass foo2 = new SomeClass();

这两行代码是否转换为相同的 IL,与dynamic它们有何不同?我知道它dynamic使用某种称为后期绑定的技术,但它是如何工作的?

4

1 回答 1

8

这两行代码是否转换为相同的 IL?

是的

动态与它们有何不同?

在您显示会员访问权限之前毫无意义;例如:

dynamic foo3 = new SomeClass();
foo3.SomeMethod();

在这里,SomeMethod通过动态调度层或位于反射之上的缓存元编程层在运行时完全解决(取决于SomeClass具有什么功能)。在常规(非动态)IL 中,它只是一个callvirt操作码。

于 2013-07-29T07:42:16.473 回答