var vs常规对象声明C#

时间:2013-07-29 07:39:38

标签: c#

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

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

1 个答案:

答案 0 :(得分:8)

  

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

  

动态与它们有何不同?

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

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

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