2012-01-29 81 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