C# 对象构造函数重载

标签 c# constructor

我正在尝试为一个类设置一个重载的构造函数。我认为这应该相当简单,但我似乎无法让它发挥作用。

有什么想法吗?

    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);
}

关于C# 对象构造函数重载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2241533/

相关文章:

c# - 两种 MAC 地址检索方法返回两个不同的 MAC 地址

c# - 如何使用透明度/alpha 在 Canvas 上绘制图像

java - 在构造函数中初始化 ArrayList

javascript - Render 方法不会重新渲染在构造函数中初始化的元素

C# 要么返回 false,要么什么都不做

c# - 如何将敏感信息获取到数据流中的 SSIS 脚本组件

c++ - 为什么有些情况下可以省略模板参数规范?

c++ - 稍后在 `: , ` 中使用在构造函数的 `: , ` 部分初始化的成员是否安全?

java - 我可以在构造函数中调用 set 方法吗

c# - 内存泄漏问题