首页 > 解决方案 > 所以在 c# 中 int 没有同步块索引,也没有对类型对象的引用。CLR 如何知道要启动什么 ToString() 方法?

问题描述

所有原始类型都覆盖 ToString() 和其他方法(如 == 运算符),但是如果 CLR 没有指向类型对象的指针,它如何知道要调用哪个方法?对于原始类型,如果我理解正确的话,没有同步块索引,也没有对类型对象的引用——只有堆栈中保存的值。

我哪里错了?

标签: c#referencestack

解决方案


对于值类型,没有继承在起作用。这意味着变量的类型足以准确地确定正在调用的方法。

反过来,这意味着编译器将发出call指令,而不是callvirt,这意味着 CLR 不需要使用运行时类型信息来调用方法。


推荐阅读