Microsoft.Net框架程序设计学习笔记(13):虚方法调用机理

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

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

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

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

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

你可能感兴趣的:(Microsoft)