2014-03-01 63 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") 
    { 
    } 
} 
相关问题