在构造函数中调用构造函数

时间:2014-09-14 14:59:12

标签: c# constructor

我正在按照以下说明进行作业(并非完整,仅仅是我努力理解的部分):

包含两个构造函数。第一个不带参数,并将savingsBalance变量设置为零,并通过调用带有0和空字符串的第二个(即两个参数)构造函数将savingsAccountName设置为空字符串。第二个构造函数接受一个double参数(savingsBalance)和一个字符串参数(savingsAccountName),并通过分别调用setSavingsBalance方法和setsavingsAccountName方法设置savingsBalance。

这是我到目前为止所做的,但它没有正常工作,所以我确定我完全错过了它。任何人都可以提供帮助并告诉我哪里出错了吗?

public SavingsAccount()
    {
        savingsBalance = 0;
        SavingsAccount baseAccount = new SavingsAccount(0, "");
    }

    public SavingsAccount(double balance, string name)
    {
        balance = getSavingsBalance();
        name = getSavingsAccountName();
    }

4 个答案:

答案 0 :(得分:1)

使用this关键字。

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

    }

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

答案 1 :(得分:1)

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

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

然后你可以从无参数构造函数

中调用它
public SavingsAccount(): this(0 , "")
{ }

答案 2 :(得分:0)

您基本上需要 cascade constructors 从其他人那里调用一个构造函数。

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

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

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

答案 3 :(得分:0)

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

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