重写派生类中的默认值 (c#)

发布于 2024-09-15 09:10:30 字数 284 浏览 5 评论 0原文

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

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;
}

If i have an accessor and default property in a base class as follows:

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

Then I derive this class, is it possible to override the default value of _foo?

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

爱殇璃 2024-09-22 09:10:30

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

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

The _foo = 5 statement effectively executes in the base class's constructor. You can add code to the derived class constructor that changes foo's value immediately afterwards:

class derived:base{
    public derived()
    {
        foo = 10;
    }
}
べ映画 2024-09-22 09:10:30

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

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

You could use a construtor to initialise the derived class and set the base types _foo property:

class derived:base
{
    public derived()
    {
        this._foo = 10;
    }
}
岁月静好 2024-09-22 09:10:30

您可以创建一个属性:

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

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

You can create a property:

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

and

protected override int _foo { get { return 10; } }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文