为什么我的循环无法结束?为什么会引发异常?
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");
}
}
错误提示:未处理的类型&#39; System.ArgumentOutOfRangeException&#39;发生在mscorlib.dll
其他信息:指数超出范围。必须是非负数且小于集合的大小。
我该如何解决?
答案 0 :(得分:4)
更改
for ( i = 0; i <= item.Count;i++ )
要
for ( i = 0; i < item.Count;i++ )
基于0的索引最后一个索引小于item.Count
返回的值
在你的情况下,最后一个循环将尝试查找具有索引的项目,该项目不存在于数组
将<= item.Count
更改为< item.Count
会阻止i
的值超过最后可能的索引