好的想象我有一个基类BaseClass
,以及一个源自ChildClassA
的子类BaseClass
。
当我这样做时会发生什么?
BaseClass b = new ChildClassA;
我想象的是:
ChildClassA
类型存储在堆上!b
被分配了对ChildClassA的引用我问的原因是,据我所知,一旦一个对象被声明并存储在堆上,那就是它总是如此。转换只是告诉CLR 处理它就像它是一个不同的类型,但它实际上仍然是原始类型,知道它仍然是原始类型。
我说错了吗?我在这里缺少什么?
答案 0 :(得分:2)
你明白你的理解。
b
指的是ChildClassA
个实例。后者仍然像以前一样在堆上,并且由于将实例分配给BaseClass b
而没有新的对象被堆积。
答案 1 :(得分:2)
通过Jove,你已经拥有它了!
转换只是告诉CLR 把它看作是一种不同的类型,
实际上,这不是转换,更像是解释。