2014-03-01 64 views
1

這裏是我的基類:如何派生類屬性傳遞給基類的構造函數

class baseClass 
{ 
string fileContents; 

public baseClass(string filePath) 
{ 
    fileContents=getContents(filePath); 
} 

} 

我有一個派生類,其中的文件路徑將始終是相同的。理想情況下,我想如下來傳遞文件的路徑:

class derivedClass:baseClass 
{ 
string [email protected]"x:\abc.def"; 

public derivedClass():base(specialFilePath) 
{ 
} 
} 

但是這給了我一個編譯錯誤:

An object reference is required for the non-static field, method, or property 'derivedClass.specialFilePath' 

如果我理解正確,這種情況正在發生,因爲baseClass構造函數將被首先調用,之前derivedClass有機會創建specialFilePath。我怎樣才能將這個字符串傳遞迴基類的構造函數?

+1

使其成爲靜態字符串 –

回答

3

使「specialFilePath」爲靜態,這將工作 - 靜態成員在構造函數運行之前被初始化。

class derivedClass:baseClass 
{ 
    static string [email protected]"x:\abc.def"; 

    public derivedClass():base(specialFilePath) 
    { 
    } 
} 
1

這是因爲當你想訪問你的財產specialFilePath的時候,它並沒有被初始化。使其靜態。

2

如果你這樣做,你可能甚至不需要一個字段。

class derivedClass : baseClass 
{ 
    public derivedClass() 
     : base(@"x:\abc.def") 
    { 
    } 
} 
相關問題