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

max*_*axp 3 c# overriding default

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

class base{
protected int _foo = 5;
public int foo {get{return _foo;}set{_foo = value;}}
}
Run Code Online (Sandbox Code Playgroud)

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

class derived:base{
// foo still returns 5?
protected new int _foo = 10;
}
Run Code Online (Sandbox Code Playgroud)

Tim*_*son 6

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

class derived:base{
    public derived()
    {
        foo = 10;
    }
}
Run Code Online (Sandbox Code Playgroud)