private void方法帮助C#

时间:2015-10-01 02:05:40

标签: c#

目前在我的计算器程序中使用方法计算结果(税收)时遇到麻烦。我查看了Murach的C#2012,但我似乎无法找到解决此错误的方法。

错误:

  

CS7036"没有给出符合所需形式参数的论据"

这是我的私人空白

 private void calcTaxes(decimal decGross, out decimal decFica, out decimal decState, out decimal decFederal)
    {
        decFica = (decGross * cdecFICA_RATE);
        decFederal = (decGross * cdecFEDERAL_RATE);
        decState = (decGross * cdecSTATE_RATE);
    }

我正在尝试获取税率的值并将其插入我的代码中。

 try
        {
            intHours = int.Parse(txtHours.Text);
            try
            {
                decRate = decimal.Parse(txtRate.Text);

                if (intHours >= 1 && intHours <= 50)
                    if (decRate >= 10.00M && decRate <= 15.00M)
                    {


                        decGross = calcGross(intHours, decRate);
                        decFica = calcTaxes(decGross);     //this
                        decFederal = calcTaxes(decGross);  //this  
                        decState = calcTaxes(decGross);    //And this are the issued areas.
                        decUnionDues = setUnionDues();

                        calcNetpay(decGross, decFica, decFederal, decState, decUnionDues, out decNetpay);

                        cdecTotalnetpay += decNetpay;
                        cintEmployeecount += 1;
                        decAveragenetpay = calcAveragenetpay();

                        lblGross.Text = decGross.ToString("C");
                        lblFica.Text = decFica.ToString("C");
                        lblState.Text = decState.ToString("C");
                        lblFederal.Text = decFederal.ToString("C");
                        lblUnionDues.Text = decUnionDues.ToString("C");
                        lblNetpay.Text = decNetpay.ToString("C");

                        lblTotalnetpay.Text = cdecTotalnetpay.ToString("C");
                        lblEmployeecount.Text = cintEmployeecount.ToString("N0");
                        lblAveragenetpay.Text = decAveragenetpay.ToString("C");

                        txtHours.Focus();

任何人都能看到我的意思吗?

3 个答案:

答案 0 :(得分:1)

您在方法调用中缺少out个参数。

试试这个

calcTaxes(decGross,out decFica,out decState,out decFederal)

此次通话后,decFicadecStatedecFederal个变量已计算完毕。

如您所见,您的私有方法的返回类型为void。所以,它不会返回任何东西。

您需要将类型为decimal的3个参数传递给您的私有方法,该方法将使用您方法中的以下代码进行更新。

    decFica = (decGross * cdecFICA_RATE);
    decFederal = (decGross * cdecFEDERAL_RATE);
    decState = (decGross * cdecSTATE_RATE);

Reference here

答案 1 :(得分:1)

你需要只调用一次这个函数,不要三次:

calcTaxes(decGross,out decFica,out decState,out decFederal)

答案 2 :(得分:0)

如果需要在代码中返回值,则不能将函数声明为void。因为void只返回处理代码,但就是这样。

我建议你在方法中做一些逻辑,然后将函数作为十进制返回。这是实现结果的更长但更清晰的方法:

private decimal calcTaxes(decimal decGross, int calcType)
{
    decimal decResult = 0;
    if (calcType == 1)
    {
        decResult = (decGross * cdecFICA_RATE);
    }
    else if (calcType == 2)
    {
        decResult = (decGross * cdecFEDERAL_RATE);
    }
    else if (calcType == 3)
    {
        decResult = (decGross * cdecSTATE_RATE);
    }

    return decResult;
}

然后修改调用函数的代码,如下所示:

 decFica = calcTaxes(decGross, 1);
 decFederal = calcTaxes(decGross, 2);
 decState = calcTaxes(decGross, 3);