c# - 所以在 c# 中 int 没有同步块索引,也没有对类型对象的引用。CLR 如何知道要启动什么 ToString() 方法?
问题描述
所有原始类型都覆盖 ToString() 和其他方法(如 == 运算符),但是如果 CLR 没有指向类型对象的指针,它如何知道要调用哪个方法?对于原始类型,如果我理解正确的话,没有同步块索引,也没有对类型对象的引用——只有堆栈中保存的值。
我哪里错了?
解决方案
对于值类型,没有继承在起作用。这意味着变量的类型足以准确地确定正在调用的方法。
反过来,这意味着编译器将发出call
指令,而不是callvirt
,这意味着 CLR 不需要使用运行时类型信息来调用方法。
推荐阅读
- unit-testing - 为什么 Mocha & Chia 单元测试未能在 Web 组件构造函数中捕获预期错误?
- segmentation-fault - MPI_Init() 在带有 MPICH 安装的 Raspberry Pi4 上崩溃
- r - 如何在 Linux 上安装 nloptr
- python - Python 诅咒获取按键
- go - 如何更新 Go 依赖项
- python - 如何从网站获取特定数据并事后使用?
- javascript - 如何在点击事件 javascript 上停止异步功能?
- integer - 反向整数 leetCode
- python - 为什么我的文件没有在 Python 中从一开始就被覆盖,为什么我不能读取整行?
- javascript - 使用浏览器中的 REST api 列出 GKE 集群中的 pod