System.InvalidOperationException: Collection was modified; enumeration operation may not execute.

来源:互联网 发布:unity3d simplemove 编辑:程序博客网 时间:2024/05/18 11:31

Author:刘宁

Augmentum.ld ShangHai

 

今天在查看系统的Log的时候发现下面的异常抛出:

System.InvalidOperationException: Collection was modified; enumeration operation may not execute.

根据CallStack跟踪到product code中有一段相关代码(因为牵涉公司机密,现提供伪代码): 

            //Pseudocode

            List<string> items = new List<string>();
            items.Add("a");
            items.Add("b");
            foreach (string item in items)
            {
                if (item == "a")
                {
                    items.Remove(item);
                }
            }

 

查了下google:You cannot change a collection while you are looping through it.

于是自己修改了下code如下: 

            //Pseudocode

            List<string> items = new List<string>();
            List<string> tempItems = new List<string>();
            items.Add("a");
            items.Add("b");
            foreach (string item in items)
            {
                if (item == "a")
                {
                    tempItems.Add(item);
                }
            }

            foreach (string tempItem in tempItems)
            {
                items.Remove(tempItem);
            }

 

再次编译执行,异常消失。

 

 


 

原创粉丝点击