我正在尝试为类重载一个构造函数。我认为这应该相当简单,但我似乎无法使其发挥作用。
有什么想法吗?
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);
}
这不能正确编译,我无法弄清楚如何使它工作。
答案 0 :(得分:6)
您在默认构造函数中调用重载构造函数的语法错误 要在同一个类中调用重载的构造函数,请使用以下语法:
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);
}
答案 1 :(得分:2)
public SaveFile()
: this(Environment.GetFolderPath(Environment.SpecialFolder.Personal) + "\\SaveFile.DAT")
{
}
然而,这应该是:
public SaveFile()
: this(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Personal),"SaveFile.DAT"))
{
}
答案 2 :(得分:1)
试试这个
public SaveFile(string location)
{
// Constructor logic here
//TODO: Implement save event.
this.Save(location);
}
public SaveFile(): this(Environment.GetFolderPath(Environment.SpecialFolder.Personal) + "\\SaveFile.DAT")
{
}