不能隐含地转换' void'到十进制'

时间:2016-02-01 01:29:16

标签: c# visual-studio

RANK = 2处收到此错误,我无法弄清楚如何解决此问题。当我在网上查找错误时,大多数答案都说使方法成为十进制而不是void,因此它可以有一个返回类型。

但是代码的部分要求"通过使其成为void函数并添加表示此方法返回的未来值金额的第四个参数来重写CalculateFutureValue方法。"

futureValue = this.CalculateFutureValue(futureValue, monthlyInvestment, monthlyInterestRate, months);

/

private void btnCalculate_Click(object sender, EventArgs e)
    {            
            decimal monthlyInvestment =  Convert.ToDecimal(txtMonthlyInvestment.Text);
            decimal yearlyInterestRate = Convert.ToDecimal(txtInterestRate.Text);
            int years = Convert.ToInt32(txtYears.Text);

            int months = years * 12;
            decimal monthlyInterestRate = yearlyInterestRate / 12 / 100;
            decimal futureValue = 0m;

            futureValue = this.CalculateFutureValue(futureValue, monthlyInvestment, monthlyInterestRate, months);

            txtFutureValue.Text = futureValue.ToString("c");
            txtMonthlyInvestment.Focus();            

    }

2 个答案:

答案 0 :(得分:3)

这是他们的要求:而不是这个

decimal ComputeSomething(decimal x, decimal y) {
    return x*x + y*y;
}
...
decimal result = ComputeSomething(10.234M, 20.5M);

这样做:

void ComputeSomething(decimal x, decimal y, out res) {
    res = x*x + y*y;
}
...
decimal result;
ComputeSomething(10.234M, 20.5M, out result);

请注意附加参数out前面的res限定符。这意味着参数是"输出",即您的方法必须在完成之前为其指定一些值。

resComputeSomething的作业将成为变量result的作业。

答案 1 :(得分:2)

您需要通过引用传递变量:

private void CalculateFutureValue(ref decimal futureValue, decimal monthlyInvestment, decimal monthlyInterestRate, int months){ ... }

this.CalculateFutureValue(ref futureValue, monthlyInvestment, monthlyInterestRate, months);

请参阅this documentation

如果在将futureValue传递给CalculateFutureValue之前尚未使用值初始化out,则需要使用ref关键字代替<p>