根据子类更改对象中 属性 的实际值
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
的类型,但它确实为您提供了它所持有的确切类型的参考。
问题:我以这种形式创建了对象:
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
的类型,但它确实为您提供了它所持有的确切类型的参考。