CLR提供了两个IL指令来调用方法:call和callvirt。

  call指令根据引用变量的类型来调用一个方法。

  callvirt指令根据引用变量指向的对象类型来调用一个方法。

  当编译源代码时,编译器知道代码中是否在调用一个虚方法,并据此产生call或callvirt指令。产生call而不是callvirt会提高代码的性能,因为CLR不必检查引用对象的实际类型。

  不管最终是通过call还是callvirt来调用一个实例方法,所有的实例方法调用都会接受一个隐藏的this指针作为方法的第一个参数,其中this指针指向当前正在操作的对象。

posted on 2011-03-27 15:23  辛勤的代码工  阅读(305)  评论(0)    收藏  举报