如果我在基类中有一个访问器和默认属性,如下所示:
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;
}
答案 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; } }