我正在尝试做:
但是出现了编译器错误:“CS0533 'Concrete.Execute()' 隐藏了继承的抽象成员 'Program.Base.Execute()'",我之前隐藏过很多成员,但从未遇到这种情况,我感到非常困惑。在 MSDN 和网络上花费了很长时间,但找不到关于这种行为的任何信息。我真的很感激任何有关此问题的见解。这里是示例代码。
public abstract class Base
{
public abstract Task Execute();
}
public abstract class Concrete<T> : Base where T : class
{
new public abstract Task<T> Execute();
}
但是出现了编译器错误:“CS0533 'Concrete.Execute()' 隐藏了继承的抽象成员 'Program.Base.Execute()'",我之前隐藏过很多成员,但从未遇到这种情况,我感到非常困惑。在 MSDN 和网络上花费了很长时间,但找不到关于这种行为的任何信息。我真的很感激任何有关此问题的见解。这里是示例代码。
virtual
关键字,但是在new
的位置使用override
对我来说起作用。然而,仍然存在一个问题,当隐藏基类值时,你改变了返回类型。你需要更改名称或使子类返回一个Task
值。 - undefinednew
隐藏时无法更改签名?(我有一种感觉,过去我可能做过这样的事情,但我可能记错了) - undefinednew
相同,并且new
关键字应该适用于方法和属性- https://msdn.microsoft.com/en-us/library/435f1dw2.aspx - undefined