2011-08-12 41 views
3

我想運行一個基本的循環,將在dataview網格中找到一個特定的值。我無法弄清楚代碼是怎麼回事,因爲for循環在評估其基本條件之前退出。CLR正在優化我的forloop變量

private void SearchDataViewGrid(string FileName) 
    { 
     //finds the selected entry in the DVG based on the image 
      for (int i = 0; i == dataPartsList.Rows.Count ; i++) 
      { 
       if(FileName == dataPartsList.Rows[i].Cells[3].Value.ToString()) 
       { 
       dataPartsList.Rows[i].Selected = true; 
       } 
      } 
     } 

該程序不會崩潰,但我得到了我的'我'變量聲明它已被優化了一個錯誤。嘗試了幾個簡單的修復我在網上找到,但似乎沒有保留它。

我已驗證我傳遞的字符串是正確的,我的'虛擬'DVG爲包含的行數返回值14。即使我刪除for循環中的'if'語句,我仍然得到相同的錯誤。

+2

將其更改爲'的for(int i = 0;我

+1

@Henk:你應該把它轉換成一個答案! –

回答

7

條件condfor(init; cond; update)中間是不是直到條件,但一個條件。

所以,你需要將其更改爲

for (int i = 0; i < dataPartsList.Rows.Count ; i++) 
+0

b ......在這裏待了太久......我正在評估一個令人擔憂的真實陳述,難怪它沒有開火...... thanx幫助球員,我實際上只是將==改成了!=和它現在工作正常。 –

+2

任何不遵循常規做法的原因,並使用更多的信息'<? –

2

問題是你的條件是i == dataPartsList.Rows.Count所以只有當這兩個值相等時,主體纔會執行。這保證你的循環永遠不會執行。你需要改變你的條件是<而不是==

for (int i = 0; i < dataPartsList.Rows.Count ; i++) { 
    ... 
} 
+1

'<='?這是一個正確的泰晤士報。 –

+0

這是零基礎,這將在最後一個崩潰... –

+0

@ ed,達維德,工作4個小時的睡眠。 Thansk爲趕上! – JaredPar