在抽象类中声明子类类型的变量

时间:2017-07-06 03:33:32

标签: c# inheritance

我想强制一个子类中的函数是抽象父类中的类的类型。例如:

abstract class Animal {
    public abstract void Add(Animal animal);
}

class Cat: Animal {
    public override void Add(Cat cat) {
        //Do cat things
    }
}

class Dog: Animal {
    //This should not be allowed
    public override void Add(Animal dog) {
        //Do dog things
    }
}

在这里,我们看到Cat类型的对象可以传递给Dog.Add。有没有办法强制函数采用类型Dog

我相信有一些方法可以在运行时进行检查,但如果可能的话,我宁愿有编译错误。

1 个答案:

答案 0 :(得分:1)

您可以声明一个接口并使用带有 where 约束的泛型。

=IF(H13>0,IF(H14>0,IF(H15>0,IF(H16>0,IF(H17>0,IF(H18>0,IF(H19>0,"Yes","No"),"No"),"No"),"No"),"No"),"No"),"No")