2011-08-08 54 views
-2

如何解決無錯誤代碼的錯誤?在C中調用覆蓋構造函數和基址#

public Comparison2(decimal number1, decimal number2) : base() 
    { 
     this.Number1 = number1; 
     this.Number2 = number2; 
    } 

    public Comparison2(decimal number1, decimal number2, int problemNumber, int subject, int seconds) 
     : this(number1, number2), base(problemNumber, subject, seconds) { } 
+0

什麼問題了嗎? – 2011-08-08 23:52:14

+0

也許你會詳細說明你想修復的特定冗餘......? (我假設你希望既能調用基類構造函數也能調用同一類中的另一個構造函數) – Reddog

+0

當然Reddog –

回答

2

我認爲你唯一的選擇是要做到這一點:

public Comparison2(decimal number1, decimal number2) : base() 
{ 
    this.SetNumbers(number1, number2); 
} 

public Comparison2(decimal number1, decimal number2, int problemNumber, 
     int subject, int seconds) 
    : base(problemNumber, subject, seconds) 
{ 
    this.SetNumbers(number1, number2); 
} 

private void SetNumbers(decimal number1, decimal number2) 
{ 
    this.Number1 = number1; 
    this.Number2 = number2; 
} 
3

有時,多次寫入相同的代碼是最好的選擇,尤其是當它很簡單時。

但是,如果你真的想避免重複自己,或者如果你的實際代碼更復雜,你可以創建一個方法來包含代碼。這種方法的一個缺點是您不能在構造函數外設置readonly字段。