[英]C# does not implement inherited abstract member
我已经对这个问题进行了很多搜索。 有很多方法可以解释,但它们对我而言并不可用。
我有这个课:
public class ArcHydro : Oatc.OpenMI.Sdk.Backbone.LinkableComponent
{
public void Initialize(Argument[] properties)
{
_timeStamps = new ArrayList();
_culture = CultureInfo.CurrentCulture.NumberFormat;
_links = new Hashtable();
readArcHydro();
}
}
哪个继承这个类
namespace Oatc.OpenMI.Sdk.Backbone
{
public abstract void Initialize(IArgument[] properties);
}
错误是
`'CUAHSI.OpenMI.ArcHydro' does not implement inherited abstract member
'Oatc.OpenMI.Sdk.Backbone.LinkableComponent.Initialize(OpenMI.Standard.IArgument`[])'`
我该如何解决? 我在上课之前使用了重写,但错误仍然存在。
你有两个问题。 您应该实现:
public abstract void Initialize(IArgument[] properties);
但是您正在实现:
public void Initialize(Argument[] properties);
// --------------------^ Notice the missing 'I'.
其次,您缺少override
关键字。 因此,您的课程应如下所示:
public class ArcHydro : Oatc.OpenMI.Sdk.Backbone.LinkableComponent
{
public override void Initialize(IArgument[] properties)
{
_timeStamps = new ArrayList();
_culture = CultureInfo.CurrentCulture.NumberFormat;
_links = new Hashtable();
readArcHydro();
}
}
您的实现函数应具有“ override”关键字和相同的参数。
public override void Initialize(IArgument[] properties)
{
//...
}
实现的方法的签名应与抽象方法完全相同。 因此,您应该像这样:
public override void Initialize(IArgument[] properties)
{
...
}
请注意,您的输入参数应来自抽象类中提到的IArgument []类型,请记住将其标记为重写
按照Microsoft上的示例
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.