【问题标题】:C#: Inherit and override property [duplicate]C#:继承和覆盖属性[重复]
【发布时间】:2018-03-27 13:52:01
【问题描述】:

我有一个类 Base 就像:-

class Base 
{
    public virtual string a=>SomeMethod(a);
}

我需要覆盖 Base 中的变量 a。

class Derived: Base 
{
    public string a ="Hello";
}

这是正确的吗?从Base继承并覆盖a的值的正确方法是什么? 谢谢!

【问题讨论】:

  • 您在问如何使用override 关键字?不,您的代码不正确。基类中的a 是一个属性。在您的派生类中,它是一个字段。
  • public override string a => "Hello";
  • 您是否收到错误消息?说明什么错误?
  • 艾米是对的!你不能覆盖这样的属性。谢谢!

标签: c# inheritance virtual


【解决方案1】:

使用关键字“覆盖”。但是,您不能在字段上使用它。如果要覆盖基类中的虚拟属性,请在派生类中创建相应的属性。

class Derived: Base 
{
    public override string a => "Hello";
}

【讨论】:

  • 您所做的不仅仅是添加 override 关键字。可能值得注意的是 OP 为什么这是不同的,因为简单地将 override 添加到 OP 的代码不会解决他们的问题
  • @maccettura 你是对的。我将添加一些说明。