如何从基类访问属性?

时间:2017-05-04 16:20:36

标签: c#

假设我有一个类Animal和一个子类Dog。子类Dog具有类Animal没有的属性(假设属性为Age且此属性尚未在Animal类中定义)。

现在我有:

Animal animal;

后来我认识到我的动物是一只狗:

animal = new Dog();

我现在如何访问狗的年龄:

int age = animal.Age;

提前致谢!

2 个答案:

答案 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为空。