根据子类更改对象中 属性 的实际值

Change actual value of a property in an Object based on Subclass

问题:我以这种形式创建了对象:

Animal temporalAnimal = new Dog("Dog", "Ace","Boxer");
                               //Type //Name //Race

动物是基类 Class,狗是子类。 Type 和 Name 来自 Animal,Race 来自 Dog Class。我想将 temporalAnimal 中 "Race" 的值更改为 "Shiba Inu",但我无法访问 属性(在子类上是 Public),我该如何修改他的值 ?

string type;
public string Type
{
    get { return type; }
    set { type = value; }
}

如果您的引用是基 class 类型,则您无法访问子class 的属性(和方法)。您必须先转换为 subclass 然后更改值:

Animal temporalAnimal = new Dog("Dog", "Ace","Boxer");
                               //Type //Name //Race

((Dog)temporalAnimal).Race = "Shiba Inu";

请注意,这实际上并没有改变 temporalAnimal 的类型,但它确实为您提供了它所持有的确切类型的参考。