遍历ArrayList易犯错误
场景:
将ArrayList中符合条件的记录删掉,第一时间写出的程序如下:
foreach (string aStr in aList)
{
if (aStr.Equals(textBox1.Text))
{
aList.Remove(aStr);
}
}
{
if (aStr.Equals(textBox1.Text))
{
aList.Remove(aStr);
}
}
似乎没有错误,编译也通过的,但运行时如果真的遇到符合条件的数据,则会抛出错误:
简单的解决办法是如何呢?这时用Clone方法最好不过了,用如下代码:
ArrayList bList = (ArrayList)aList.Clone();
foreach (string aStr in bList)
{
if (aStr.Equals(textBox1.Text))
{
aList.Remove(aStr);
}
}
foreach (string aStr in bList)
{
if (aStr.Equals(textBox1.Text))
{
aList.Remove(aStr);
}
}
似乎集合类型都会有这样的问题的。