如果子类的实例被强制转换回继承的类,存储在子类字段中的数据会发生什么情况?这在内存中是如何工作的?
public abstract class AchievementNode : PrioritizedData
{
public enum NodeTypes
{
NONE = 0x0,
HEAD = 0x1,
TAIL = 0x2,
TYPE = 0x4,
DATA = 0x8,
LEVEL = 0x16,
GLOBAL = 0x32
}
public NodeTypes nodeType;
public virtual AchievementNode Init(NodeTypes type, params int[] enumData)
{
nodeType = type;
return this;
}
}
public class AchievementTypeNode : AchievementNode
{
public enum AchievementTypes {TIME,COMPLETION,UNLOCK,SOCIAL,ACTION};
public AchievementTypes AchievementType;
public override AchievementNode Init(AchievementNode.NodeTypes type)
{
base.Init(type);
return (AchievementNode)this;
}
}
最佳答案
类型转换只是改变你引用对象的方式。它不会改变对象本身。
转换对象时,子类中的数据不会发生任何变化。唯一的区别是您只能将对象作为基类的实例来引用,而实际数据是子类的数据。
如果您仅将红色汽车称为“汽车”,那么它的红色程度会降低吗?
关于c# - 将继承的类转换回基类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16705076/