覆盖派生类中的默认值(c#)

时间:2010-08-18 09:45:44

标签: c# default override

如果我在基类中有一个访问器和默认属性,如下所示:

class base{
protected int _foo = 5;
public int foo {get{return _foo;}set{_foo = value;}}
}

然后我派生这个类,是否可以覆盖_foo的默认值?

class derived:base{
// foo still returns 5?
protected new int _foo = 10;
}

3 个答案:

答案 0 :(得分:6)

_foo = 5语句在基类的构造函数中有效执行。您可以在派生类构造函数中添加代码,然后立即更改foo的值:

class derived:base{
    public derived()
    {
        foo = 10;
    }
}

答案 1 :(得分:2)

您可以使用构造函数初始化派生类并设置属性的基本类型:

class derived:base
{
    public derived()
    {
        this._foo = 10;
    }
}

答案 2 :(得分:1)

您可以创建一个属性:

protected virtual int _foo { get { return 5; } }

protected override int _foo { get { return 10; } }