2011-08-12 40 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