zoukankan      html  css  js  c++  java
  • CLR如何调用虚方法、属性和事件

    属性和方法实际上是做为方法调用的。
    CLR为方法的调用提供了两个IL指令:
    • IL指令call可以用来调用静态方法、实例方法和虚方法。使用call指令调用静态方法时,必须指定CLR要调用的方法的类型。使用call指令调用实例方法或者虚方法时,必须指定使用变量来引用对象。call指令假定变量不能为null,换句话说,也就是变量本身的类型指出了用什么类型定义CLR要调用的方法。如果变量的类型没有定义方法,则检测基础类型来匹配方法。指定call通常用来非虚拟地调用虚方法。
    • IL指令callvirt用来调用实例方法和虚方法,而不能用来调用静态方法。使用callvirt指令调用实例方法或者虚方法时,必须指定变量来引用变量。使用IL指令callvirt指令调用非虚方法实例方法时,变量的类型指出了用什么类型定义CRL要调用的方法。使用IL指令callvirt调用虚实例方法时,CLR查找用来调用的变量通常不能为null,换句话说,也就是编译时该调用时,JIT编译器生成验证变量是否为null的代码,如果变量为null,callvirt指令引发CLR抛出一个NullReferenceException异常。这种额外的检查意味着IL指令callvirt的执行速度比call指令稍慢。注意,即使callvirt指令用来调用非虚实例方法时,也要执行这种变量是否为null的检查。
  • 相关阅读:
    第一章 监控系统入门
    第十八章 Tagging_Redis6.2.1 服务器部署
    第十五章 ACL安全策略
    第十七章 Redis常见管理命令
    第五章 监控系统zabbix快速监控一台主机
    第十九章 Redis6.2.1脚本安装
    第三章 监控系统zabbix4.2官方源安装
    第十六章 Redis6.0其他新功能
    CSS教程:div垂直居中的N种方法
    css 文本两端对齐
  • 原文地址:https://www.cnblogs.com/qishichang/p/1456286.html
Copyright © 2011-2022 走看看