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

本文介绍了CLR中用于方法调用的两种IL指令:call和callvirt。call指令根据变量类型调用方法,而callvirt则根据实际对象类型进行调用。文章还讨论了这两种指令的选择对性能的影响。

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

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

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

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

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

转载于:https://www.cnblogs.com/free722/archive/2011/03/27/1996956.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值