Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在构造函数中调用构造函数_C#_Constructor - Fatal编程技术网

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

C# 在构造函数中调用构造函数,c#,constructor,C#,Constructor,我正在按照以下说明完成一项作业(并非全部,只是我难以理解的部分): 包括两个构造函数。第一个不接受任何参数,将savingsBalance变量设置为零,并通过调用第二个(即两个参数)构造函数(0和空字符串)将savingsAccountName设置为空字符串。第二个构造函数接受一个双参数(savingsBalance)和一个字符串参数(savingsAccountName),并分别通过调用setSavingsBalance方法和setsavingsAccountName方法来设置savingsB

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

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

到目前为止,这就是我所拥有的,但它不能正常工作,所以我确信我完全错过了它。谁能帮我一下,告诉我哪里出了问题

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

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

基本上,您需要级联构造函数来从另一个构造函数调用一个构造函数

public SavingsAccount() : this(0 , "")
{
}
当然,您需要从其他构造函数设置类级字段:

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

使用
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 , "")
{ }

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

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

通过值传递double并在构造函数中覆盖它根本没有任何意义。我认为您应该向您的讲师建议,在金融计算中使用单/双精度浮点数据类型是完全错误的。十进制是正确的选择。这就是它,非常感谢!我需要更深入地研究“this”函数才能完全理解它,但现在我可以看到我以前的代码是如何忽略参数并设置自己的参数的。无论如何,再次感谢你的帮助!