该守则不会执行所有

时间:2017-04-13 07:43:28

标签: c# winforms calculated-field

我有以下代码:

private void G1_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
    {

            decimal quantity = 0, cost = 0;
            decimal   totalstock = 0, newtotalstock = 0;
            if (decimal.TryParse(G1.Rows[e.RowIndex].Cells["RealExport"].Value.ToString(), out quantity) && decimal.TryParse(G1.Rows[e.RowIndex].Cells["Cost"].Value.ToString(), out cost))
            {
                decimal price = quantity * cost;
                G1.Rows[e.RowIndex].Cells["Total"].Value = price.ToString();
            }

            if (decimal.TryParse(G1.Rows[e.RowIndex].Cells["TotalStock"].Value.ToString(), out totalstock) && decimal.TryParse(G1.Rows[e.RowIndex].Cells["RealExport"].Value.ToString(), out quantity))
            {
                newtotalstock = totalstock - quantity;
                G1.Rows[e.RowIndex].Cells["TotalStock"].Value = newtotalstock.ToString();
                return;
            }
            decimal avai = 0, newavai = 0;
            if (decimal.TryParse(G1.Rows[e.RowIndex].Cells["RealExport"].Value.ToString(), out quantity) && decimal.TryParse(G1.Rows[e.RowIndex].Cells["AvailableStock"].Value.ToString(), out avai))
            {
                newavai = avai - quantity;
                G1.Rows[e.RowIndex].Cells["AvailableStock"].Value = newavai.ToString();
                return;
            } }

问题是,只有执行2个中的2个代码,我的意思是,当计算 newtotalstock 时,代码将结束。

我尝试将 newavai 更改为高于上方,结果相同,它将计算 newavai 并传递 newtotalstock 。我不知道为什么,所有代码都是正确的。请帮忙

2 个答案:

答案 0 :(得分:1)

单词“return”结束函数,如果你使用的是void类型方法,你真的不需要使用return,除非你想在某个时候退出它。 “return”之后的代码永远不会被执行(只有异常可能在使用期间“yield return”,但这是另一个故事)。

void someMethod()
{
  doSomething();
  return;
  StartWorldWarThree(); //no waries, this will never be executed :)
}

Furethermore你总是可以在你的代码中创建一个断点(单击窗口的左边框,或者只是阅读它),然后检查代码的执行方式:) F10 / F11代码中的步骤,如果没有更多的断点,F5转到下一个断点或结束执行。

答案 1 :(得分:1)

记住所有条件都是真实的回报;将停止执行其余的代码,如果你想要3执行,删除返回;并将其作为方法的最后一行

void Method() {
  if() {}
  if() {}
  if() {}
  return;
}

或者根本不放置它,因为该方法无效且不需要它