CLR提供了两个IL指令来调用方法:call和callvirt。
call指令根据引用变量的类型来调用一个方法。
callvirt指令根据引用变量指向的对象类型来调用一个方法。
当编译源代码时,编译器知道代码中是否在调用一个虚方法,并据此产生call或callvirt指令。产生call而不是callvirt会提高代码的性能,因为CLR不必检查引用对象的实际类型。
不管最终是通过call还是callvirt来调用一个实例方法,所有的实例方法调用都会接受一个隐藏的this指针作为方法的第一个参数,其中this指针指向当前正在操作的对象。
本文介绍了CLR中用于方法调用的两种IL指令:call和callvirt。call指令根据变量类型调用方法,而callvirt则根据实际对象类型进行调用。文章还讨论了这两种指令的选择对性能的影响。

被折叠的 条评论
为什么被折叠?



