如何在foreach中删除一个集合中的元素

如何在foreach中删除一个集合中的元素,其实很简单,只用一个递归就可以了,例如下面的一个代码判断一个listbox里面的items都是checkbox其中被选中的全部都删除

        void removef()
        {
            foreach (CheckBox item in lst.Items)
            {
                if (item.IsChecked == true)
                {
                    lst.Items.Remove(item);
                    removef();
                    return;
                }
            }
        }

这样就OK了,因为你在foreach中删除多个元素的话,它的会抛出一个异常说集合以修改,无法用枚举信息,因为你删除了一个元素以后集合中的元素数量已经变了,但是foreach还是用的以前的长度,所以就会出现这个(InvalidOperationException)用递归的话每次删除以后都是新的foreach自然就不存在这个问题了

你可能感兴趣的:(c++)