如果我有两个类,A
并且B
B 从 A 派生:
class A {}
class B : A { }
我可以很高兴地向上B
转换 to的一个实例A
。
B b = new B();
A a = b;
现在,我可以理解运行时如何确定底层类型是 B,正如ECMA-335(通用语言基础设施(CLI)分区 I 到 VI)的第 132 页所述
实例化类型的对象应携带足够的信息以在运行时恢复其确切类型(包括其泛型参数的类型和数量)。[理由:这是正确实现强制转换和测试实例以及反射功能所必需的
那么,运行时如何知道虽然底层类型是B
它实际上存储在一个A
. 我知道我不会看到可用的方法B
,但如果基础类型是B
,它如何存储存储位置的类型A
?
那有意义吗?