2013-10-19 174 views
2
class experiment 
{ 

    int xCoord = 0; 
    int yCoord = 0; 

    public experiment(int x, int y) { 
     this.xCoord = x; 
     this.yCoord = y; 
    } 
} 

class result :experiment{ 
    int zCoord = 0; 

    public result(int z) : base(x,y) 
    { 
     this.zCoord = z; 
    } 

} 

任何人都可以幫助我解決這個簡單的問題。我有一個錯誤base(x,y)它說,名稱'x'在當前上下文中不存在,也適用於y。調用子類的父類

+0

在附加的註釋,你現有的設計很差。 '結果'根本不像'實驗'。使'result'成爲'experiment'的成員;所謂的組合.. – nawfal

回答

8

xy是局部領域experiment類他們不是在繼承類可見,你可以調用基類的構造與像默認值:

public result(int z) : base(0,0) 

還請跟隨General Naming Conventions from Microsoft,這樣的類名稱開頭大寫字母。

編輯:


這將是更好,如果你的子類有一個構造函數接收參數xy,並且它調用基類構造函數中包含這些值:

public result(int x, int y, int z) : base(x,y) 
{ 
    this.zCoord = z; 
} 
+0

tnx的答案傢伙我真的很感激它! – kornben

+0

@kornben,不客氣 – Habib

4

結果類的構造函數中沒有x,y。

你傳遞給你的構造函數z,但告訴你的基構造函數接收x和y。雖然當時沒有x和y。

試試這個:

public result(int z, int x, int y) : base(x,y) 
{ 
    this.zCoord = z; 
} 

或者設置固定值(不變量):

public result(int z) : base(0, 0) 
{ 
    this.zCoord = z; 
}