调用构造函数中的构造函数

本文关键字:构造函数 调用 | 更新日期: 2023-09-27 18:21:45

我正在按照以下说明进行作业(并非全部,只是我难以理解的部分):

包括两个构造函数。第一个不带参数,将savingsBalance变量设置为零,并通过用0和空字符串调用第二个(即两个参数)构造函数将savingsAccountName设置为空字符串。第二个构造函数采用一个双参数(savingsBalance)和一个字符串参数(savingsAccountName),并通过分别调用setSavingsBalancemethod和setsavingsAccountName method来设置savingsBalance。

这就是我到目前为止所拥有的,但它不能正常工作,所以我确信我完全错过了它。有人能提供任何帮助并告诉我哪里出了问题吗?

public SavingsAccount()
    {
        savingsBalance = 0;
        SavingsAccount baseAccount = new SavingsAccount(0, "");
    }
    public SavingsAccount(double balance, string name)
    {
        balance = getSavingsBalance();
        name = getSavingsAccountName();
    }

调用构造函数中的构造函数

使用this关键字。

    public SavingsAccount():this(0,"")
    {
    }
    public SavingsAccount(double balance, string name)
    {
        this.balance = balance;
        this.name = name;
    }

您没有设置类的字段或属性。您只是在更改传递给构造函数的参数的值。

public SavingsAccount(double balance, string name)
{
    this.savingsBalance = balance;
    this.name = name;
}

然后您可以从无参数构造函数调用它

public SavingsAccount(): this(0 , "")
{ }

您基本上需要cascade constructors从另一个构造函数调用一个构造函数。

public SavingsAccount() : this(0 , "")
{
}

当然,您需要从其他构造函数设置类级别字段:

public SavingsAccount(double balance, string name)
{
    this.balance = balance;
    this.name = name;
}

只有在构造函数中的第一个操作时,才能从另一个构造函数调用一个构造函数。这是通过在方法签名中进行调用来实现的。

public SomeConstructor():this("foo"){
}
public SomeConstructor(string someParam){
}