对于以下课程:
public class Parent {
//Parent members
}
public class ChildA : Parent {
//ChildA members
}
public class ChildB : Parent {
//ChildB members
}
如果我将 ChildA 或 ChildB 实例向上转换为 Parent 实例,那么我无法访问它们的成员,但它们的成员仍然存在,因为如果我向下转换并尝试再次访问它们的成员,我会发现它们仍然拥有数据。
我认为这意味着父实例不断为子类分配内存。
那么,这是否意味着当我实例化一个父类时,它会为子类成员分配内存,或者这只是在我进行强制转换时发生?
如果我们前后进行转换,父级是否可以为多个子级分配内存?
在上面描述的情况下,转换不会影响从基类转换为子类时分配的内存,反之亦然。
如果实例化一个 Parent,内存中就会有一个 Parent 对象。如果您将其强制转换为任何一个子类,它将失败并显示InvalidCastException
.
如果实例化任一子对象,内存中就会有一个子对象。您可以将其投射到父级,然后再返回。在这两种情况下,内存分配都不会改变。
此外,如果您实例化一个 Child's,转换为 Parent,然后尝试转换为 Child,您将得到一个InvalidCastException
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)