方法和if语句..有人可以查看问题是什么?

时间:2014-12-10 00:07:24

标签: c# .net if-statement methods

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;(下图)会说代码无法访问。

2 个答案:

答案 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并返回传递给函数的值。