C#在派生类属性重写中使用基类属性值

时间:2018-10-10 19:59:09

标签: c# derived-class base-class

我的班级结构如下:

public class Animal
{
    private int _animalId;

    public virtual int AnimalId
    {
        get { return _animalId; }
    }
}

public class Dog : Animal
{
    public override int AnimalId
    {
        get 
        { 
            if (Request.Params["New_Animal"] == "true")
                return -1;
            else
                return AnimalId;
        }
    }
}

我想重写AnimalId属性,如下所示: 如果是新动物,则id应该为-1,但是如果要更新现有动物,我想从基类中返回AnimalId

这是一个极其简化的示例,但是我想知道是否/如何完成。

谢谢

2 个答案:

答案 0 :(得分:3)

使用base.AnimalId

public class Animal
{
    private int _animalId;

    public virtual int AnimalId
    {
        get { return _animalId; }
    }
}

public class Dog : Animal
{
    public override int AnimalId
    {
        get 
        { 
            if (Request.Params["New_Animal"] == "true")
                return -1;
            else
                return base.AnimalId;
        }
    }
}

答案 1 :(得分:0)

您可以将动物编号中的animalId设置为私有保护,而在狗中则可以在属性中返回base.animalid

相关问题