簡體   English   中英

C#Object構造函數重載

[英]C# Object Constructor Overloads

我正在嘗試為一個類重載一個構造函數。 我認為這應該相當簡單,但我似乎無法使其發揮作用。

有任何想法嗎?

    public SaveFile(string location)
    {
        // Constructor logic here
        //TODO: Implement save event.
        this.Save(location);
    }

    public SaveFile()
    {
        string location = Environment.GetFolderPath(Environment.SpecialFolder.Personal) + "\\SaveFile.DAT";
        SaveFile(location);
    }

這不能正確編譯,我無法弄清楚如何讓它工作。

您在默認構造函數中調用重載構造函數的語法錯誤。
要在同一個類中調用重載的構造函數,請使用以下語法:

public ClassName(parameters) : this(otherParameters)
{
   // logic
}

如果你想在基類中調用構造函數,那么你將使用base關鍵字而不是this 在您的情況下,代碼將讀取:

public SaveFile() : this(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Personal), "SaveFile.DAT") {}
public SaveFile(string location)
{
    this.Save(location);
}
 public SaveFile() 
   : this(Environment.GetFolderPath(Environment.SpecialFolder.Personal) + "\\SaveFile.DAT")
    { 
    } 

然而,這應該是:

 public SaveFile() 
   : this(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Personal),"SaveFile.DAT"))
    { 
    } 

嘗試這個

public SaveFile(string location)
{
    // Constructor logic here
    //TODO: Implement save event.
    this.Save(location);
}

public SaveFile(): this(Environment.GetFolderPath(Environment.SpecialFolder.Personal) + "\\SaveFile.DAT")
{
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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