[英]How to pass a derived class property to the constructor of a base class
這是我的基類:
class baseClass
{
string fileContents;
public baseClass(string filePath)
{
fileContents=getContents(filePath);
}
}
我有一個派生類,文件路徑將始終相同。 理想情況下,我想傳遞該文件路徑如下:
class derivedClass:baseClass
{
string specialFilePath=@"x:\abc.def";
public derivedClass():base(specialFilePath)
{
}
}
但這給了我一個編譯錯誤:
An object reference is required for the non-static field, method, or property 'derivedClass.specialFilePath'
如果我理解正確,就會發生這種情況,因為在derivedClass
有機會創建specialFilePath
之前, derivedClass
調用baseClass
構造函數。 如何將此字符串傳遞回基類的構造函數?
使“specialFilePath”成為靜態,這將起作用 - 靜態成員在構造函數運行之前初始化。
class derivedClass:baseClass
{
static string specialFilePath=@"x:\abc.def";
public derivedClass():base(specialFilePath)
{
}
}
如果你這樣做,你可能甚至不需要一個字段。
class derivedClass : baseClass
{
public derivedClass()
: base(@"x:\abc.def")
{
}
}
那是因為當您想要訪問屬性specialFilePath
,它尚未初始化。 讓它靜止。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.