在foreach 中remove 和add

来源:互联网 发布:录音软件audition 编辑:程序博客网 时间:2024/04/28 05:13
            List<int> m_list = new List<int>();            m_list.Add(1);            m_list.Add(2);            m_list.Add(3);            m_list.Add(4);            m_list.Add(5);            m_list.Add(6);            foreach (int item in m_list)            {                if (item == 4)                {                    m_list.Remove(item);                }            }

上面一段代码,看起来好像是没有问题的,但其实运行一下,就会发现,他会抛出EXCEPTION。

原因是当在foreach中更改了 List的数目(使用remove ,Add),这时foreach对List的数目并没有更新,所以就会产生越界。

所以解决方法就是,在foreach中remove 或 add 后,使用break 。跳转出来,就不会出现异常了。

            List<int> m_list = new List<int>();            m_list.Add(1);            m_list.Add(2);            m_list.Add(3);            m_list.Add(4);            m_list.Add(5);            m_list.Add(6);            foreach (int item in m_list)            {                if (item == 4)                {                    m_list.Remove(item);                    break;                }            }            foreach(int i in m_list)            {                Console.WriteLine("i = {0}",i);            }