c# – 虚拟和覆盖在场景后面做了什么

栏目: C# · 发布时间: 7年前

内容简介:我刚刚了解Virtual和Override用于(我找不到这么长时间使用).我不能给你任何关于如何在IL中完成的见解,但基本理论很简单.当编译器看到虚拟方法声明时,不是将该方法附加到类中,而是将其添加到该类的vtable(虚方法表)中,该类保存指向函数的指针.

我刚刚了解Virtual和Override用于(我找不到这么长时间使用).

我不能给你任何关于如何在IL中完成的见解,但基本理论很简单.

当编译器看到虚拟方法声明时,不是将该方法附加到类中,而是将其添加到该类的vtable(虚方法表)中,该类保存指向函数的指针.

现在由于vtable是类的一部分,它由子类继承,因此虚拟方法也是继承的.现在是覆盖位.当编译器在方法声明中看到覆盖时,它会查找vtable,找到要覆盖的方法并更改函数指针,使其指向新的定义.

因此,您既可以从父类继承方法,也可以在子类中更改它们的定义.

有关更多信息,请参阅 Virtual Method Table 上的Wikipedia文章.

翻译自:https://stackoverflow.com/questions/1310312/what-does-virtual-and-override-do-behind-the-scene


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

UNIX网络编程

UNIX网络编程

史蒂文斯、芬纳、鲁道夫 / 杨继张 / 清华大学出版社 / 2006-1 / 98.00元

《UNIX网络编程》(第1卷)(套接口API第3版)第1版和第2版由已故UNIX网络专家W. Richard Stevens博士独自编写。《UNIX网络编程》(第1卷)(套接口API第3版)是3版,由世界著名网络专家Bill Fenner和Andrew M. Rudoff执笔,根据近几年网络技术的发展,对上一版进行全面修订,增添了IPv6的更新过的信息、SCTP协议和密钥管理套接口的内容,删除了X......一起来看看 《UNIX网络编程》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具