c#重写抽象成员

本文关键字:成员 抽象 重写 | 更新日期: 2023-09-27 18:17:25

这里是我的代码,我试图覆盖SettingsFileName成员:

    public class ProcessorTest: Processor
    {
        public virtual override string SettingsFileName
        {
            get { return @"C:'Settings.xml"; }
        }
    }

这个类的成员是:

    public abstract class Processor
    {
        /// <summary>
        /// Implement this property to enable initializing singleton from the correct file path
        /// </summary>
        public abstract string SettingsFileName { get; }
    }

但是这给了我一个错误:

A member 'ProcessorTest.SettingsFileName' marked as override cannot be marked as new or virtual

我做错了什么?

c#重写抽象成员

在继承的类中只使用override,不使用virtual override

virtual将成员标记为可重写的,因此它在基类中使用。override将成员标记为重写可重写的成员。abstract暗含virtual

remove virtual here

public class ProcessorTest: Processor
{
    public override string SettingsFileName
    {
        get { return @"C:'Settings.xml"; }
    }
}

关键字不能同时使用

由于覆盖了抽象属性,所以SettingsFileName不能是虚的。

不能使用修饰符new、static、virtual或abstract to修改重写方法

有关overrideabstract的更多信息,请参阅MSDN。

您需要在ProcessorTest中删除virtual关键字

override表示"override virtual function",不需要再写