如果我有两个类,A并且BB 从 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?
那有意义吗?