如下面代码,本人想要删除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