2012-01-29 67 views
0

我有以下情形无法痣其在继承的方法

public abstract ClassA{ 
    public virtual void Initialize(string a, int b){ 
    } 
} 

public abstract ClassB : ClassA{ 
    public virtual int Initialize(string a, int b){ 
    } 
} 

当我试图创建B类存根,我收到错误,指出SClassB已经定义了一个名为“初始化成员使用new关键字clasess '具有相同的参数类型。

如何解决该问题?

感谢, Sathish所在

回答

0

据我所知,你不能在抽象类中重写,所以你要么需要减肥抽象/虚拟和ClassB的使用override修饰符,或者在类中重写它(es)从ClassB继承。

+0

我忘了在ClassB类中包含一条语句。 B类中的Initialize方法调用基类Initialize方法。 public abstract ClassB:ClassA public virtual int Initialize(string a,int b){} {base.ini(a,b);} } } 如果我使用覆盖,我可能会最终调用base.Initialize两次。有什么想法吗? – user1002419 2012-01-30 03:59:47

+0

您是否正在从ClassA的构造函数调用Initialize?不要这样做。甚至有一个代码分析规则! – dotnetnate 2012-02-06 06:26:55