private decimal getPrice(int intQty)
{
decimal decPrice; //<--- problem here @ decPrice
if (intQty <= 500)
{
decPrice = 1.25m;
}
else if (intQty >= 501 && intQty <= 1000)
{
decPrice = 1.05m;
}
else if (intQty >= 1001 && intQty <= 5000)
{
decPrice = .90m;
}
else if (intQty > 5001)
{
decPrice = .75m;
}
return intQty;
decimal *decPrice* = Convert.ToDecimal(txtPrice.Text);
txtQty.Text = intQty.ToString();<--problem here at txtQty
}
//在最后(CONVERSION)&#39; decPrice&#39;,它一直告诉我它已在此范围内定义。但如果我删除它,上面的'decPrice&#39; (UNDERNEATH METHOD),表示已分配,但价值从未使用过,而且#txtQty&#39;(下图)会说代码无法访问。
答案 0 :(得分:1)
return intQty;
decimal *decPrice* = Convert.ToDecimal(txtPrice.Text);
txtQty.Text = intQty.ToString();<--problem here at txtQty
问题:
return
语句后编写了一些代码,这些代码是无法访问的代码。当执行到达return
语句时,它会离开当前函数,因此任何代码都无法访问。 decimal *decPrice*
再次声明decPrice
变量。它已经在你的函数的第三行声明了。 (我不知道为什么它被星星包围)decPrice
而不是intQty
答案 1 :(得分:0)
有两个问题:
return intQty; //FIRST
decimal decPrice = Convert.ToDecimal(txtPrice.Text); //SECOND
如果你有return
语句,那么在它下面写的任何东西都不会运行。因此,如果在return语句后删除decimal
,则decPrice
在使用之前不会用作方法返回。
所以正确的方法就是这样写:
decPrice = Convert.ToDecimal(txtPrice.Text);
txtQty.Text = intQty.ToString();
return intQty;
PS: - 虽然我无法理解你为什么使用if-else
阶梯,因为你并没有真正使用decPrice
并返回传递给函数的值。