Microsoft.Net框架程序设计学习笔记(13):虚方法调用机理
时间:2011-03-27 来源:辛勤的代码工
CLR提供了两个IL指令来调用方法:call和callvirt。
call指令根据引用变量的类型来调用一个方法。
callvirt指令根据引用变量指向的对象类型来调用一个方法。
当编译源代码时,编译器知道代码中是否在调用一个虚方法,并据此产生call或callvirt指令。产生call而不是callvirt会提高代码的性能,因为CLR不必检查引用对象的实际类型。
不管最终是通过call还是callvirt来调用一个实例方法,所有的实例方法调用都会接受一个隐藏的this指针作为方法的第一个参数,其中this指针指向当前正在操作的对象。
相关阅读 更多 +