问题:我已经以这种形式创建了对象:
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; }
}
答案 0 :(得分:0)
如果您的引用是基类类型的,则不能访问子类的属性(和方法)。您必须首先转换为子类,然后更改值:
Animal temporalAnimal = new Dog("Dog", "Ace","Boxer");
//Type //Name //Race
((Dog)temporalAnimal).Race = "Shiba Inu";
请注意,这实际上并不会更改temporalAnimal
的类型,但是确实为您提供了所持有的确切类型的引用。