方法将批发成本和加价%作为参数接收,并返回零售价c#

方法将批发成本和加价%作为参数接收,并返回零售价c#,c#,methods,C#,Methods,我把这段代码打出来作为家庭作业,效果很好。但是,方法部分是不正确的。该方法应从表单中接收2个值(批发价格和加价百分比)作为参数,并返回零售价格。这是我到目前为止所拥有的,我只是想知道我需要做些什么才能使方法正确 { InitializeComponent(); } private void CalculateRetail()//method header {//method body decimal Cost, //variabl

我把这段代码打出来作为家庭作业,效果很好。但是,方法部分是不正确的。该方法应从表单中接收2个值(批发价格和加价百分比)作为参数,并返回零售价格。这是我到目前为止所拥有的,我只是想知道我需要做些什么才能使方法正确

    {
        InitializeComponent();
    }
    private void CalculateRetail()//method header
     {//method body
        decimal Cost, //variables
                Percent,
                Perc,
                PercAmt,
                FinCost;

        Cost = Convert.ToDecimal(txtCost.Text);
        Percent = Convert.ToDecimal(txtPercent.Text);

        Perc = (Percent / 100);
        PercAmt = Cost * Perc;
        FinCost = Cost + PercAmt;

        lblFinCost.Text = "The Retail Price with markup is " + FinCost.ToString("C2"); //output to label
    }//end method body
    private void btnCalc_Click(object sender, EventArgs e)
    {
        decimal Cost;
        decimal Percent;

        lblFinCost.Text = "";

        if (string.IsNullOrEmpty(txtCost.Text)) // input validation check to make sure not blank
        {
            MessageBox.Show("Please enter a number for the cost", "Error");
            return;
        } //end if

        if (!decimal.TryParse(txtCost.Text, out Cost)) // input validation check to make sure is whole number
        {
            MessageBox.Show("Please enter a number for the cost", "Error");
            return;
        }
        if (string.IsNullOrEmpty(txtPercent.Text)) // input validation check to make sure not blank
        {
            MessageBox.Show("Please enter a number for the cost", "Error");
            return;
        } //end if

        if (!decimal.TryParse(txtPercent.Text, out Percent)) // input validation check to make sure is whole number
        {
            MessageBox.Show("Please enter a number for the cost", "Error");
            return;
        }
        CalculateRetail(); //call method once error check passes
    }

    private void btnClear_Click(object sender, EventArgs e)
    {
        txtCost.Text = "";//clear form
        txtPercent.Text = "";
        lblFinCost.Text = "";

    }

    private void btnExit_Click(object sender, EventArgs e)
    {
        this.Close(); //close form
    }

考虑到在检查字段是否为空或无法转换为十进制时显示相同的错误,请将两者合并:

if (string.IsNullOrEmpty(txtCost.Text) || !decimal.TryParse(txtCost.Text, out cost))
{
    MessageBox.Show("Please enter a number for the cost", "Error");
    return;
}
(TXT百分比也是如此。)

您的主要问题是不使用参数。您的方法可以这样重写:

private void CalculateRetail(decimal cost, decimal percent)
{
    var percAmt = Cost * (percent / 100);
    var finCost = cost + percAmt;

    lblFinCost.Text = "The Retail Price with markup is " + finCost.ToString("C2");
}
CalculateRetail(cost, percent);
然后这样叫:

private void CalculateRetail(decimal cost, decimal percent)
{
    var percAmt = Cost * (percent / 100);
    var finCost = cost + percAmt;

    lblFinCost.Text = "The Retail Price with markup is " + finCost.ToString("C2");
}
CalculateRetail(cost, percent);
注意,局部变量应该是CamelCase,而不是PascalCase,也就是说,它们不应该以大写字母开头

还要避免只描述我们已经看到的东西的评论;这些只会使您的代码变得混乱:

//end method body
//output to label
//variables

顺便说一句,像
finCost
percamp
这样的变量名是不好的。使用恰当的描述性名称不会受到惩罚;如果下一个人不必首先找出变量包含的内容,那么他/她将更容易维护您的代码。

重写您的方法,或许可以接受两个参数?例如,
private void calculaterDetail(十进制价格,十进制标记)
它按预期工作,但我被告知在方法标题下有太多内容,我需要将主体作为按钮单击事件的一部分移动,并且只在错误检查后调用该方法。基本上,您要求查看代码。有这样一个网站:我认为我不需要审查代码。谢谢你的否决票。@venerik CodeReview需要工作代码,这意味着代码需要产生预期的结果,所以这在CodeReview上是离题的。谢谢工作得很有魅力。清理错误检查和CamelCase会有所帮助。我感谢建设性的批评。:)