1、问题提出
在一段代码中用了foreach循环,在forreach循环中对一个字典进行了增删操作,于是出现这样的异常问题。下面看看怎么解决......
在网上查了一下,得到:
- foreach是取只读的,在取的时候数据不能变(包括修改,删除,添加等)。要避免这个问题,就应该使用for循环。这个是foreach典型的问题。
2、解决方案
- 用for循环代替foreach循环即可解决!
1 List<TcpClient> keyCollection; 2 while(true) 3 { 4 if (AsynTcp.clientDataDic.Count > 0) 5 { 6 keyCollection = new List<TcpClient (AsynTcp.clientDataDic.Keys); 7 8 for (int i = 0; i < keyCollection.Count; i++) 9 { 10 if (AsynTcp.clientDataDic[keyCollection[i]].Count > 0) 11 { 12 //to do something; 13 } 14 } 15 } 16 }