目前在我的计算器程序中使用方法计算结果(税收)时遇到麻烦。我查看了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();
任何人都能看到我的意思吗?
答案 0 :(得分:1)
您在方法调用中缺少out
个参数。
试试这个
calcTaxes(decGross,out decFica,out decState,out decFederal)
此次通话后,decFica
,decState
,decFederal
个变量已计算完毕。
如您所见,您的私有方法的返回类型为void
。所以,它不会返回任何东西。
您需要将类型为decimal
的3个参数传递给您的私有方法,该方法将使用您方法中的以下代码进行更新。
decFica = (decGross * cdecFICA_RATE);
decFederal = (decGross * cdecFEDERAL_RATE);
decState = (decGross * cdecSTATE_RATE);
答案 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);