var foo1 = new SomeClass();
SomeClass foo2 = new SomeClass();
这两行代码是否转换为相同的IL,dynamic
与它们有何不同?我知道dynamic
使用某种称为后期绑定的技术,但这是如何工作的?
答案 0 :(得分:8)
这两行代码是否会转换为相同的IL?
是
动态与它们有何不同?
在显示成员访问权限之前毫无意义;例如:
dynamic foo3 = new SomeClass();
foo3.SomeMethod();
这里,SomeMethod
完全在运行时通过动态调度层或位于反射之上的缓存元编程层(取决于SomeClass
具有的功能)来解析。在常规(非动态)IL中,它只是一个callvirt
操作码。