2015-05-23 131 views
-2

爲什麼我的循環不能結束?爲什麼它會拋出異常呢?爲什麼此循環拋出System.ArgumentOutOfRangeException錯誤,而不是結束?

int i=0; 

ArrayList item = new ArrayList(); 
ArrayList list = new ArrayList(); 

while (reader.Read()) 
{ 
    item.Add(reader["element"].ToString());//keep data from my SQL 
} 

string chk2 = textBox1.Text.ToString(); 

for (i = 0; i <= item.Count;i++) 
{ 
    if ((item[i].ToString()).Contains(chk2))//this line got error. 
    { 
     list.Add(item[i]); 
     MessageBox.Show(item[i].ToString()); 
    } 
    else 
    { 
     MessageBox.Show("Not Found"); 
    } 
} 

錯誤注:類型System.ArgumentOutOfRangeException「未處理的異常出現在mscorlib.dll

其他信息:索引超出範圍。必須是非負數且小於集合的大小。

我該如何修復它?

+4

「我的代碼是正確的。」這個陳述從來不是一個好的起點。 *始終*首先假定當某些事情不起作用時,代碼被破壞 - 實際上它在這裏。 –

+0

對不起,我英語不好。 –

+0

可能重複[什麼是「索引超出範圍」異常,以及如何解決它?](http://stackoverflow.com/questions/24812679/what-is-an-index-out-of-range -exception-how-do-i-fix-it) –

回答

4

變化

for (i = 0; i <= item.Count;i++) 

for (i = 0; i < item.Count;i++) 

隨着基於0指數比指數小於由item.Count
在你的情況返回的值最後一個循環將嘗試找到索引項這不存在於陣列中

<= item.Count更改爲< item.Count將預先nt值爲i以上最後可能索引

+0

如果你解釋爲什麼... –

+0

非常感謝你? –

相關問題