这是我的基类:
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'
如果我理解正确,就会发生这种情况,因为在baseClass
有机会创建derivedClass
之前,首先会调用specialFilePath
构造函数。如何将此字符串传递回基类的构造函数?
答案 0 :(得分:4)
使“specialFilePath”成为静态,这将起作用 - 在构造函数运行之前初始化静态成员。
class derivedClass:baseClass
{
static string specialFilePath=@"x:\abc.def";
public derivedClass():base(specialFilePath)
{
}
}
答案 1 :(得分:3)
如果你这样做,你甚至可能不需要一个字段。
class derivedClass : baseClass
{
public derivedClass()
: base(@"x:\abc.def")
{
}
}
答案 2 :(得分:2)
那是因为当您想要访问您的财产specialFilePath
时,它尚未初始化。让它静止。