如下面代码,本人想要删除dict字典表里的某个数据,但是字典key不连续,所以用foreach遍历,本人晓得foreach是取只读的,在取的时候数据不能变(包括修改,删除,添加等)。所以本人定义了一个临时字典,将dict赋给这个临时字典,然后遍历这个临时字典,得到key后,从dict中删除掉。可是这样还是会报错:集合已修改;可能无法执行枚举操作。小弟有点糊涂了,本人操作这个临时字典会对源字典产生影响吗?这个字典之间的拷贝是怎么一种机制?还有本人应该怎么样解决这个问题,谢谢了。
private void button2_Click(object sender, EventArgs e) { Dictionary<int, int> b = new Dictionary<int, int>(); b = dict;//dict是本人定义好的一个有数据的字典,但key不连续 if (dict.Count != 0) { foreach (var a in b.Keys) { //某种操作得到本人想要删除的key dict.Remove(a); } } MessageBox.Show("ok"); }
解决方案
5