簡體   English   中英

如何將派生類屬性傳遞給基類的構造函數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM