假设我有一个类Animal
和一个子类Dog
。子类Dog
具有类Animal
没有的属性(假设属性为Age
且此属性尚未在Animal
类中定义)。
现在我有:
Animal animal;
后来我认识到我的动物是一只狗:
animal = new Dog();
我现在如何访问狗的年龄:
int age = animal.Age;
提前致谢!
答案 0 :(得分:1)
您需要将animal
投回Dog
以访问其属性。您可以使用以下任一方式安全地执行此操作:
as
null
检查:
Dog dog = animal as Dog;
if (dog != null) { /*animal was Dog access properties here*/ }
is
有明确的演员:
if (animal is Dog)
{
Dog dog = (Dog)animal;
}
然而,这种向下看起来像代码味道,你可能需要考虑重新设计。
答案 1 :(得分:0)
使用(Dog)animal
进行简单投射。
在这些情况下,我喜欢使用as
演员:
var probablyDog = animal as Dog;
if (probablyDog != null)
{
//indeed dog
probablyDog.Age;
}
如果probablyDog
为空,则不是狗或animal
为空。