2017-04-13 67 views
-4

我有以下代碼:代碼將無法執行所有

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出3的代碼,我的意思是,當newtotalstock計算,代碼將結束。

我試圖改變newavai到了上面,結果是一樣的,它會計算newavai並通過newtotalstock。我不知道爲什麼,所有的代碼都是正確的。請幫助

+5

也許這是因爲'回報;'語句的結束'如果'阻止? – Fabjan

+0

調試器是你的朋友。 – Filburt

+0

@Filburt哦親愛的,當我在這裏提出這個問題,這意味着我已經調試了10次以上 – Serenade

回答

1

單詞「return」結束功能,如果您使用的是void類型方法,您並不需要使用return,除非您想要在某個點處退出它。 「返回」後面的代碼永遠不會執行(只有在使用過程中可能會產生異常「收益回報」,但這是另一回事)。

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

Furethermore你總是可以做出一個斷點在代碼中(點擊你的窗口的左邊框,或只是瞭解它),然後檢查是如何被執行的代碼:) F10/F11,使如果沒有更多的斷點,則在你的代碼中執行,F5進入下一個斷點或結束執行。

1

考慮到所有的條件都是真的返回;將停止執行代碼的其餘部分,如果你想要執行3,則刪除返回;和方法的最後一行把它作爲

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

或者不要將其放置在所有的,因爲這種方法是無效的,並不需要它

+0

在評論之前閱讀最後一句 – MrVoid