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

时间:2018-08-18 17:44:36

标签: c# oop inheritance properties subclass

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

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

动物是基类,狗是子类。类型和名称来自动物,种族来自狗类。我想将temporalAnimal中“ Race”的值更改为“ Shiba Inu”,但是我无法访问该属性(在子类上为Public),如何修改其值?

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

1 个答案:

答案 0 :(得分:0)

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

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

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

请注意,这实际上并不会更改temporalAnimal的类型,但是确实为您提供了所持有的确切类型的引用。